Linux Load Average 很高代表什么?和 CPU 占用有什么区别
Linux Load Average 高不等于 CPU 一定满。本文用性能瓶颈定位思路说明如何结合 CPU、IO、进程状态和业务日志判断负载来源。
Linux Load Average 高,不等于 CPU 使用率一定高。它表示一段时间内正在运行或等待运行的任务数量,也包括部分不可中断等待任务。服务器卡顿时,只看 Load 数字很容易误判,必须结合 CPU、IO、进程状态和业务日志。
先看三个时间窗口
uptime
输出里的三个 Load 分别代表 1 分钟、5 分钟、15 分钟。1 分钟高、15 分钟低,可能是短时波动;三个值都高,说明压力持续存在。
Load 是否异常要结合 CPU 核心数。单核服务器 Load 4 很高;8 核服务器 Load 4 不一定异常。判断时可以先确认 CPU 核心数:
nproc
CPU 高还是 IO 等待
top
关注 `%Cpu(s)`。`us` 高表示用户态程序消耗 CPU;`sy` 高表示内核态开销高;`wa` 高表示 CPU 在等待 IO。CPU 不高但 Load 高时,重点看 `wa` 和进程状态。
用进程状态看瓶颈
ps -eo pid,stat,user,cmd,%cpu,%mem --sort=-%cpu | head -n 20
`stat` 里如果大量出现 `D` 状态,通常是不可中断 IO 等待,可能和磁盘、数据库、存储或文件系统有关。此时只升级 CPU 往往没用。
什么时候看磁盘 IO
如果系统有 iostat:
iostat -x 1 5
关注磁盘利用率、等待时间和读写压力。数据库、日志写入、备份任务、压缩任务都可能把 IO 打满。
常见判断路径
| 表现 | 可能原因 | 处理方向 |
|---|---|---|
| CPU us 高,Load 高 | 程序计算压力或异常进程 | 找高 CPU 进程 |
| CPU wa 高,Load 高 | 磁盘 IO 等待 | 查磁盘、数据库、日志 |
| CPU 不高,D 状态多 | 存储或文件系统等待 | 查 IO 和系统日志 |
| 只有定时高 | 计划任务、备份、统计脚本 | 查 cron 和任务日志 |
日志和任务也要看
如果 Load 在固定时间升高,检查计划任务:
crontab -l
ls -la /etc/cron*
备份、压缩、统计、同步任务都可能在固定时间拉高负载。Web 业务还应结合访问日志判断是否有爬虫或异常请求。
不要只靠重启
重启能把 Load 降下来,但不能解释它为什么升高。重启前至少记录 uptime、top、ps、磁盘空间、业务日志和发生时间。否则下次高负载仍会重复发生。
用户可以自行查看进程、CPU、IO、磁盘和应用日志。如果怀疑宿主机 IO 异常、虚拟化资源争用、存储故障或攻击流量,需要服务商协助确认底层状态。