性能分析不是寻找一个万能指标,而是把用户感受到的问题,沿应用、内核和硬件数据路径逐层变成可验证的证据。先定义问题和时间范围,再建立基线、选择方法、提出假设、用观测或实验验证,最后用同样的工作负载复测。
明确谁受影响、什么操作变慢、从何时开始、频率如何、期望与实际差多少。
保留正常时段、异常时段和变更前后的同口径数据,避免只看一个孤立数字。
资源用 USE,服务请求用 RED;再结合工作负载特征、延时分析或向下钻取。
每一步都回答一个问题;记录命令、时间、范围和开销,避免随机调参。
使用相同负载和统计口径验证收益,同时检查错误率、尾延时和资源转移。
一次操作用了多久?分布和高百分位是否恶化?
单位时间完成多少工作或接收多少请求?
资源忙碌时间或容量被占用了多少?
资源无法立即服务的工作是否在排队?
失败、丢包、重传、分配失败或内核告警是否增加?
从低开销概览开始,每条命令都只负责回答一个问题。不要把检查表本身当作诊断结论。
| 命令 | 先回答什么 |
|---|---|
uptime | 比较 1、5、15 分钟平均负载,识别负载正在上升还是下降。 |
dmesg -T | tail | 检查近期内核错误和 OOM 等事件;读取可能需要权限。 |
vmstat -SM 1 | 观察运行队列、交换、系统级 CPU 与内存活动。 |
mpstat -P ALL 1 | 检查各 CPU 是否失衡,以及是否只有单个 CPU 异常繁忙。 |
pidstat 1 | 定位意外的 CPU 消费者,并区分用户态与系统态时间。 |
iostat -sxz 1 | 查看设备 IOPS、吞吐、等待时间和忙碌程度;选项以本机 sysstat 为准。 |
free -m | 观察内存容量以及文件系统缓存,而不是只盯着 free 一列。 |
sar -n DEV 1 | 检查网络接口的数据包和吞吐量。 |
sar -n TCP,ETCP 1 | 检查连接率和 TCP 重传等协议统计。 |
top | 回到进程和系统概览,结合前述证据确定下一步。 |
这是一组只读的危机初查入口,不是结论。命令可用性、字段和权限随 Linux 发行版及工具版本变化;在生产环境使用跟踪、剖析或主动负载前,应先评估开销和授权。