Load Average 表示正在运行或等待不可中断资源的任务数量,并不等同于 CPU 使用率。高负载而 CPU 空闲,通常意味着任务在等待磁盘、网络文件系统或内核资源。
判断是否真的异常
先把负载与逻辑 CPU 数量比较:
uptime
nproc
cat /proc/loadavg
持续 15 分钟负载超过 CPU 数量才值得重点关注。短暂的一分钟尖峰可能只是批任务或发布造成的正常波动。
区分运行与等待
vmstat 1
mpstat -P ALL 1
ps -eo state,pid,comm,wchan:32 --sort=state | head -30
vmstat 中 r 高且 CPU user/system 高,说明计算资源不足;b 高或大量进程处于 D 状态,优先检查磁盘、NFS 和块设备。wchan 能帮助定位进程卡在哪个内核等待点。
容器环境还要检查 CPU throttling。宿主机 CPU 看似空闲时,容器可能已经触发 cgroup 限额。
常见误判
- 只看瞬时
top,没有观察至少一个业务周期 - 看到高负载立即扩容,却忽略挂死的 NFS
- 把容器 CPU 限额问题误判为节点容量不足
- 忽略僵尸进程和不可中断睡眠任务
收尾清单
确认瓶颈类型后,再选择优化 SQL、拆分批任务、修复存储、调整限额或扩容。不要用“Load 高”作为结论,它只是一条入口信号。