文档首页> 技术教程> 服务器负载高的排查顺序

服务器负载高的排查顺序

发布时间:2026-01-24 11:03        更新时间:2026-01-25 02:32
负载(load average)这个数字很多人天天看,含义却常被误解:它是正在运行加上等待运行的进程数的平均值,不单指 CPU 忙。排查负载高,按固定顺序走,多数十分钟能定位。 先读懂数字 uptime 输出 load average: 2.10, 1.85, 1.60,分别是最近 1、5、15 分钟的平均值,三段连看能判断趋势:一分钟高、十五分钟低,是刚刚发生的尖峰;三段都高,是持续状态。负载要和核数对照着读,4 核机器负载 4 表示刚好饱和,超过 4 就有进程在排队。任务多的机器负载瞬时冲高很正常,看持续值再下结论。 第一步:分清 CPU 型还是 IO 型 top 看第三行 CPU 各项:us(用户态)高,是业务进程在吃 CPU;wa(iowait,等待磁盘的时间占比)高,瓶颈在磁盘,CPU 本身很闲。vmstat 1 里的 r 列(等待 CPU 的进程数)和 b 列(阻塞在 IO 的进程数)是交叉验证工具:r 高是 CPU 排队,b 高是 IO 排队,一眼分型。看不懂就 top 里按 1 键展开每颗核,一颗核打满、其余空闲,多半是单线程瓶颈。 第二步:内存够不够 free -h 看 available 列,低于总内存的一成说明内存吃紧,系统可能已经在用交换分区,卡顿感明显。此时在 top 里按 M 键按内存排序,找 RSS 靠前的进程,确认是谁占的。 第三步:定位具体进程 CPU 型:top 按 P 排序锁定进程,再按 H 看线程;IO 型:iostat -x 1 看 %util 与 await,谁在写盘用 iotop 确认。找到进程后结合业务判断是正常峰值还是异常——死循环、日志疯写、被攻击都有可能,判据就一句:这个消耗说得通吗。 第四步:网络别漏掉 CPU、内存、磁盘都正常但负载仍高,用 sar -n DEV 1 看网卡流量,ss -s 看连接总数,突发流量或大量 TIME_WAIT 也会把负载顶起来。排查时把每一步的命令输出顺手贴进工单,接手的人不用重跑,多人协作里这是最省时间的习惯。没有 sar 的机器先装 sysstat,应急时 cat /proc/net/dev 也能看到实时的收发字节数。 一句提醒:单次快照会骗人,top 的一瞬间不代表常态;负载要结合趋势看,长期高于 CPU 核数的七成就该优化或升配,别等打满再动手。