top 是 linux 性能排查第一 工具,可实时分析负载、CPU、内存、IO 及进程瓶颈;需关注 load average、us/sy/ni、wa%、RES/VIRT 等指标,并配合 vmstat、iostat 等验证。

linux 系统 负载高时,top是最直接、最常用的实时分析 工具。它不仅能看整体负载(load average),还能定位是 CPU、内存、IO 还是某个进程在拖慢系统。
看懂 top 顶部的三行关键指标
启动 top 后,第一行显示系统时间、运行时长、用户数和load average(1/5/15 分钟平均负载):
– 如果数字持续高于 CPU 核心数(如 4 核机器长期>4),说明系统过载;
– load 值高但 CPU idle% 也高?可能是 IO 等待(wa% 高)或大量进程阻塞在磁盘 / 网络上。
按 CPU 或内存排序,快速揪出“罪魁祸首”
默认按 CPU 使用率排序(%CPU 列),但常需切换视角:
– 按内存:按 M 键(大写),看 %MEM 和 RES 列,识别内存泄漏或缓存占满的进程;
– 按运行时间:按 T 键,找出长期霸占 CPU 的老进程;
– 按 IO 等待:观察 wa% 是否持续>20%,再结合 iotop 或pidstat -d确认具体进程。
关注几个容易被忽略但关键的字段
- us(user) >80%?说明应用层代码或脚本在疯狂计算,检查是否有死 循环 、未优化 算法;
- sy(system) 高?内核态耗时多,可能是频繁系统调用、锁竞争或驱动问题;
- ni(nice) 非零?有进程被手动降优先级,但仍在消耗资源;
- RES vs VIRT:VIRT 大但 RES 小,通常是 malloc 了但没真正用;RES 持续增长 + 不释放,才真要警惕内存泄漏。
配合其他命令交叉验证,避免误判
top 只是入口,不能单靠它下结论:
– uptime 看 load average 趋势是否突增;
– vmstat 1 查看 r(运行队列)、b(阻塞进程)、si/so(swap 交换)是否异常;
– iostat -x 1 看 %util、await、svctm,区分是磁盘慢还是请求太多;
– ps aux –sort=-%cpu | head -10 快速导出 TOP10 CPU 占用进程备查。
基本上就这些。top 不是万能的,但它是性能排查的第一把钥匙——看懂它,再搭配少量辅助命令,90% 的常见瓶颈都能快速定位。