目录
如何查看 Linux 系统中的 CPU、内存、磁盘等资源使用情况?
什么是 Linux 中的负载(Load Average)?如何解读它?
如何通过 top 和 htop 命令监控系统性能?
如何使用 mpstat 命令来查看 CPU 的利用情况?
如何分析系统 CPU 瓶颈?
如何分析 CPU 瓶颈?如何优化 CPU 负载?
iostat%20%E5%91%BD%E4%BB%A4%E8%AF%8A%E6%96%AD%E7%A3%81%E7%9B%98%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%EF%BC%9F-toc" name="tableOfContents" style="margin-left:80px">如何使用 iostat 命令诊断磁盘性能问题?
如何检查磁盘 I/O 瓶颈?常见的磁盘 I/O 瓶颈有哪些?
iostat%20%E5%88%86%E6%9E%90%E7%A3%81%E7%9B%98%E7%9A%84%20%25%20util%E3%80%81await%E3%80%81svctm%EF%BC%9F-toc" name="tableOfContents" style="margin-left:80px">如何通过 iostat 分析磁盘的 % util、await、svctm?
如何通过 dstat 来监控系统的多种资源?
如何使用 sar 命令收集系统资源使用的数据?
如何使用 strace 工具进行系统调用跟踪?
如何使用 lsof 来查看哪些进程占用了哪些文件?
如何通过 vmstat 工具来监控内存使用情况?
free 命令输出的缓存和交换区的含义是什么?
如何使用 free 命令查看内存使用情况?
如何查看当前系统中的内存分配情况?
如何使用 smem 工具查看内存的使用详情?
如何诊断内存泄漏问题?
什么是 Linux 中的虚拟内存?它是如何管理的?
如何使用 slabtop 查看内存的缓存使用情况?
如何通过调整 /proc/sys/vm 参数来优化内存性能?
swappiness
dirty_ratio 和 dirty_background_ratio
overcommit_memory 和 overcommit_ratio
如何使用 top 命令查看进程的内存使用情况?
如何通过 numastat 命令查看内存分配的节点信息?
如何使用 strace 跟踪进程的系统调用?
跟踪新启动的进程
跟踪已运行的进程
过滤特定的系统调用
将输出保存到文件
统计系统调用信息
显示系统调用的时间戳
如何优化系统中的磁盘 I/O 性能?
如何查看磁盘分区的使用情况以及磁盘空间的分布?
如何优化磁盘文件系统的性能?
如何通过 fio 测试磁盘的随机 / 顺序读写性能?
安装 fio
顺序读写测试
随机读写测试
混合读写测试
什么是磁盘的预读(readahead)机制?如何调整?
如何通过 blkid 命令查看磁盘的分区和类型?
如何使用 dd 命令测试磁盘读写性能?
如何使用 iotop 命令实时监控磁盘 I/O?
如何使用 perf 工具生成火焰图?火焰图在性能分析中的核心价值是什么?
使用 perf 工具生成火焰图
火焰图在性能分析中的核心价值
什么是 CPU 的 C-states 和 P-states?它们对性能有什么影响?
CPU 的 C-states 和 P-states 的概念
对性能的影响
nice 命令和 renice 命令的作用是什么?如何通过它们调整进程优先级?
如何通过 pidstat 监控指定进程的内存、CPU、I/O 等多维度指标?
如何查看物理 CPU 数量、每个 CPU 的核心数及逻辑处理器总数?
使用 lscpu 命令
查看 /proc/cpuinfo 文件
使用 dmidecode 命令
如何通过 pmap 分析进程的内存映射?
如何使用 ps 命令查看系统中正在运行的进程?
基本用法
查看所有进程
查看详细信息
按特定条件筛选进程
树形结构显示进程
实时监控进程
什么是实时进程(Real-time Process),它们与普通进程有何不同?
cgroups(控制组)如何用来限制和管理进程的资源?
如何通过调整进程的优先级来优化系统性能?
如何分析进程中的 CPU 使用、内存使用等性能瓶颈?
CPU 使用分析
内存使用分析
综合分析
如何使用 atop 工具进行进程级别的性能分析?
什么是进程上下文切换(Context Switch)?如何优化它?
如何排查 CPU 使用率 100% 的进程?
使用 top 命令
使用 htop 命令
使用 ps 命令结合 grep 筛选
使用 pidstat 命令
分析进程的具体行为
如何通过 top 命令快速定位 CPU 占用最高的进程?如何查看其子线程资源消耗?
快速定位 CPU 占用最高的进程
查看子线程资源消耗
如何通过 pidstat 监控特定进程的 CPU 使用率及上下文切换情况?
监控特定进程的 CPU 使用率
监控特定进程的上下文切换情况
如何通过 pidstat -d 监控进程的 I/O 使用?
如何通过 vmstat 分析磁盘的 % util、await、svctm?
如何通过 tcpdump 抓取 MySQL 慢查询对应的网络包?
如何通过 ethtool 调整网卡队列长度及中断合并?
调整网卡队列长度
调整中断合并
如何使用 tcpdump 进行网络流量分析?
安装 tcpdump
基本抓包命令
过滤规则
实时查看抓包信息
分析捕获的数据包
如何通过 netstat 或 ss 查看 TCP 连接状态及数量?
使用 netstat 查看 TCP 连接状态及数量
使用 ss 查看 TCP 连接状态及数量
什么是 TCP 的慢启动(Slow Start)和拥塞控制(Congestion Control)机制?
慢启动机制
拥塞控制机制
如何通过调整 /proc/sys/net 参数来优化网络性能?
TCP 相关参数调整
如何通过调整 /proc/sys/net 参数来优化网络性能?(续)
网络缓冲区参数调整
ARP%20%E5%8F%82%E6%95%B0%E8%B0%83%E6%95%B4-toc" name="tableOfContents" style="margin-left:120px">路由和 ARP 参数调整
如何优化系统中的 UDP 性能?
调整 UDP 缓冲区大小
什么是 TCP 的慢启动(Slow Start)和拥塞控制(Congestion Control)机制?
慢启动机制
拥塞控制机制
如何通过调整 /proc/sys/net 参数来优化网络性能?
TCP 相关参数
网络缓冲区参数
ARP%20%E5%8F%82%E6%95%B0-toc" name="tableOfContents" style="margin-left:120px">路由和 ARP 参数
如何优化系统中的 UDP 性能?
调整 UDP 缓冲区大小
优化网络接口设置
应用层优化
系统资源分配
如何诊断网络中的丢包和延迟问题?
网络连通性检查
网络设备检查
服务器端检查
应用层检查
网络性能测试工具
如何使用 ifconfig 命令查看网络接口的状态?
如何通过 bpftrace 动态跟踪内核函数调用链?
基本语法
跟踪单个内核函数
跟踪函数调用链
保存跟踪结果
如何通过 fio 测试磁盘的随机 / 顺序读写性能?
安装 fio
测试顺序读写性能
测试随机读写性能
测试混合读写性能
什么是 I/O 调度算法?如何调整(如 deadline、noop、cfq)?
常见的 I/O 调度算法
查看当前的 I/O 调度算法
调整 I/O 调度算法
如何通过 slabtop 查看内存的缓存使用情况?
安装 slabtop
使用 slabtop 查看内存缓存使用情况
什么是内存页(Page)和内存页面回收(Page Reclaim)机制?
内存页(Page)
内存页面回收(Page Reclaim)机制
如何使用 sysctl 命令查看并调整系统参数?
查看系统参数
调整系统参数
批量调整参数
如何使用 sysctl 调整系统性能?
网络性能优化
内存性能优化
文件系统性能优化
如何通过调整 /proc/sys/vm 参数来优化内存性能?
调整内存交换相关参数
调整内存分配和回收策略
调整内存页面回收参数
如何使用 dstat 来监控系统的多种资源?
安装 dstat
基本使用
监控特定资源
自定义监控指标
设置刷新间隔和显示次数
如何分析 CPU 瓶颈?如何优化 CPU 负载?
分析 CPU 瓶颈
优化 CPU 负载
如何通过 top 命令快速定位 CPU 占用最高的进程?如何查看其子线程资源消耗?
快速定位 CPU 占用最高的进程
查看子线程资源消耗
如何通过 top 命令查看进程的 CPU 使用情况?
基本使用
排序查看
筛选特定进程
查看多核心 CPU 使用情况
调整刷新间隔
如何分析进程中的 CPU 使用、内存使用等性能瓶颈?
CPU 使用性能瓶颈分析
内存使用性能瓶颈分析
综合分析与优化建议