Linux系统负载诊断需分“整体压力”和“具体瓶颈”两层:先看uptime的1/5/15分钟平均负载并与CPU核心数对比,再用top查wa值、单核不均、高CPU进程;内存看free -h的available值及swap使用,结合ps、dmesg、df等定位真实瓶颈。

直接看 CPU 和内存负载,不用装新工具,Linux 自带命令就能快速掌握核心状态。关键不是堆命令,而是分清“整体压力”和“具体瓶颈”两个层次。
CPU 负载怎么看才准
别只盯着 top 里那个百分比——它反映的是“CPU 正在忙什么”,但不说明“有多少任务在排队”。真正判断系统是否承压,先看 uptime 输出的三个数字(1/5/15 分钟平均负载):
- 这个值代表单位时间里等待运行或正在运行的进程平均数量
- 对比服务器 CPU 核心数:4 核机器,长期负载 >4 就说明有排队;>8 则明显过载
- 如果 1 分钟负载远高于 15 分钟,说明压力是刚发生的,要立刻查当前进程
再进 top 看细节:
- 顶部 %Cpu(s) 行中,wa 值持续 >20%,大概率是磁盘 IO 拖慢了整个系统
- 按 1 键展开,检查每个逻辑 CPU 是否均衡——单核跑满、其余空闲,常是单线程程序导致
- 按 P 排序,一眼锁定 CPU 消耗最高的进程
内存够不够用,看 available 不是 free
free -h 是最简捷方式,但重点看 available 这一列:
- 它表示系统当前还能立即分配给新进程的内存,比 free 更真实
- available 持续低于总内存的 10%~15%,就要警惕内存紧张
- swap used >0 且 vmstat 1 中 si/so 列频繁非零,说明物理内存已不足,系统在频繁换页
想定位谁在吃内存:
- 在 top 中按 M 键,按内存使用率排序
- 用 ps -eo pid,ppid,%mem,%cpu,comm --sort=-%mem | head -10 快速列出内存前 10 的进程
组合起来才能下结论
单一指标容易误判。比如 CPU 使用率低但负载高,可能是大量进程卡在不可中断状态(D 状态),常见于磁盘故障或 NFS 挂起;又比如内存显示充足,但应用响应慢,可能是因为内核缓存占太多,而实际工作内存不足。
- 发现负载异常时,顺手跑一遍 dmesg -T | tail -15,看有没有 OOM killer 杀进程、IO timeout 或硬件报错
- 用 df -h 确认 /var/log、/tmp 等目录没被日志或临时文件塞满——空间不足也会引发假性内存/IO 压力
- 对 Java 或数据库类服务,配合 jstack 或 mysqladmin processlist 查内部线程或连接状态,避免把外部资源问题当成程序 Bug

















