Linux高负载需结合CPU核心数、IO等待、内存压力等多维度判断:先用uptime和nproc计算负载比值,再通过top看%Cpu(s)、r列和Mem行定位瓶颈,接着用ps、iostat、iotop等命令找异常进程,最后用strace、lsof、perf深入追踪。

Linux高负载不是单看一个数字就能下结论的事,关键得结合CPU核心数、进程状态、IO等待、内存压力这些维度交叉判断。下面分四步带你实操排查,每一步都带命令和解读,照着做就能定位问题根源。
一、确认负载是否真高
先别急着杀进程,先看负载值和CPU核数的关系:
- 运行 uptime 或 cat /proc/loadavg,拿到三个值(1/5/15分钟平均负载)
- 运行 nproc 或 grep -c processor /proc/cpuinfo 查清逻辑CPU总数
- 计算比值:比如负载是 6.2, 4.8, 2.1,CPU是4核,那1分钟负载6.2 ÷ 4 = 1.55 → 已过载;若负载是 0.8, 0.9, 1.0,哪怕看起来“有1”,其实完全正常
二、快速判断瓶颈类型
打开 top,重点盯三块:
- %Cpu(s) 行:看 us(用户态)高?sy(内核态)高?还是 wa(IO等待)高? → us高:业务进程在狂算; → sy高:系统调用频繁(如大量fork、socket操作); → wa高:磁盘或网络卡住了,进程在等IO
- load average 值持续高于CPU核数,且 r 列(运行队列长度)长期 > CPU核数,说明有任务在排队
- Mem 行:如果 free 极低、buff/cache 占比高但 available 也低,可能内存吃紧;再查 free -h 看 available 是否告急
三、定位具体“搞事”的进程或线程
根据上一步线索选择对应命令:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~