top 关键指标示意图上图更适合配合下面这 5 个观察点一起看,不建议只盯单个热点进程。
1. 先看 load average
第一行里的 load average 表示 1 分钟、5 分钟、15 分钟平均负载。
快速判断:
1m < 5m < 15m:系统可能在从一波高峰中恢复
这里最容易误判的一点是:
负载高不等于 CPU 一定高。
如果进程在等磁盘、等锁、等存储,负载一样会很高。
2. 再看 CPU 行里的 us、sy、id、wa、st
第三行最值得先盯的是这几个字段:
一个很好用的经验判断是:
sy 持续偏高:可能有系统调用、内核开销或 IO 压力st > 5%:虚拟化环境里可能存在 CPU 争抢
如果 CPU 不高,但 wa 高,说明机器不是“忙着算”,而是“忙着等”。
3. 看 Tasks 和进程状态
第二行里最值得注意的不是进程总数,而是有没有异常状态持续出现。
重点看这些状态:
排查里最关键的是 D:
- 持续出现、而且数量不止一个时,优先往 IO 或存储侧排查
Z 持续累积,则更像父进程回收逻辑出了问题。
4. 看内存和 Swap
很多人一看到 free 很低就紧张,其实这经常是正常现象。
Linux 会把空闲内存用来做缓存,所以更值得看的是:
快速判断:
free 低但 buff/cache 高:通常不算异常
5. 最后看进程列表
进程列表里优先盯这几列:
常见读法:
- 某个进程长期高
%CPU:先怀疑热点计算或异常循环 - 某个进程
%MEM 持续上涨:关注内存泄漏或缓存失控 - 某个进程长期处于
D 状态:优先排查 IO 等待链路
如果看到的是进程名,不是完整命令,按一次 c 切换。
三、先记住这几个高频用法
如果只想记最常用的几条,先记这组:
top -ctop -d 2top -n 5top -p 1234 -ctop -u roottop -b -n 1
它们分别适合:
top -b -n 1:批处理输出,适合脚本和留证
四、排查里最常见的 4 种读法
1. id 很低,热点进程 CPU 很高
这通常是机器真的在忙着算。
下一步优先做:
2. CPU 不高,但 wa 很高
这是线上最容易误判的一类。
常见组合是:
这时不要继续只盯 CPU,应该立刻切到:
3. Swap 活跃,响应变慢
如果你看到:
那更像是系统在拿性能换空间。
下一步先用:
ps aux --sort=-%mem | head -10
4. D 状态进程持续出现
D 状态不是普通“休眠”,而是不可中断等待。
如果它持续存在,尤其是和 wa 偏高一起出现,排查方向基本就比较明确了:
五、运行中的高频交互按键
排查时最常用的是这几个:
如果只是排查,不建议一上来就 k 杀进程,先把证据收集完整。
六、最常见的误区
1. 只看 CPU 百分比,不看 wa
CPU 不高不代表系统没问题,它也可能是在等磁盘、等存储、等锁。
2. 看到 free 很低就断定内存不够
Linux 会积极使用缓存,所以更该看的是 Swap 是否活跃,以及大内存进程是否明显上升。
3. 只看一眼就下结论
top 是动态工具,至少连续看几轮,才能区分是瞬时抖动还是持续瓶颈。
七、结论
top 最重要的价值,不是把每一列都看懂,而是先帮你判断下一步该往哪边查。
先用 top -c 做全局判断,再根据 wa、Swap、D 状态和热点进程,决定是否转到 ps 或 iostat,这条路会比一上来就猜根因稳得多。