Linux高负载如何排查_关键技巧整理帮助提高效率【技巧】

3次阅读

linux高负载需结合CPU核心数判断是否真过载,再通过uptime、top、iostat、vmstat等工具区分CPU型、I/O型或混合型问题,逐层定位进程、线程及隐藏干扰项。

Linux高负载如何排查_关键技巧整理帮助提高效率【技巧】

Linux高负载不能只看uptime里那三个数字,得结合CPU核心数判断是否真过载,再分方向快速锁定是CPU、内存、磁盘IO还是网络拖了后腿。

先看负载值是否真超标

运行uptimecat /proc/loadavg,拿到1/5/15分钟平均负载。关键不是数字本身,而是和CPU核心数比:

  • 查核心数:grep -c 'processor' /proc/cpuinfonproc
  • 合理上限 ≈ 核心数 × 0.7(比如4核机器,负载超2.8就该看了)
  • 若1分钟值远高于15分钟值,说明刚爆发问题,优先盯当前
  • 负载高但CPU idle仍高?很可能是I/O等待导致的“假忙”

区分负载类型:CPU型 or I/O型

同一高负载,原因可能截然不同:

  • CPU型:top里%CPU总和高,mpstat -P ALL 1显示某核持续95%+,vmstatus+sy占比大,wa很低
  • I/O型:top里CPU使用率不高,但iostat -x 1%util接近100%,vmstatwa常超30%,r队列长度持续≥4
  • 混合型:用pidstat -u 1 -d 1同时看进程CPU和IO,找双高进程

逐层定位具体进程和线程

找到“罪魁”才能对症下药:

Linux高负载如何排查_关键技巧整理帮助提高效率【技巧】

AI Code Reviewer

ai自动审核代码

Linux高负载如何排查_关键技巧整理帮助提高效率【技巧】 112

查看详情 Linux高负载如何排查_关键技巧整理帮助提高效率【技巧】

  • 按CPU排序:ps -eo pid,ppid,%cpu,%mem,cmd --sort=-%cpu | head -10
  • 按内存排序:ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head -10
  • 查IO大户:iotop -o(只显示实际在读写的进程)
  • java类服务可进一步:top -H -p $PID找高耗线程,再用jstack $PID
  • 确认进程归属:ls -l /proc/$PID/execat /proc/$PID/cmdline

别漏掉隐藏干扰项

有些问题不在进程表里,却实实在在推高负载:

  • 磁盘空间满:df -hdf -i(inode耗尽也会卡死)
  • 异常定时任务:crontab -lsystemctl list-timers --all
  • 内核级报错:dmesg -T | tail -30 看OOM、硬件错误或时间跳变
  • 突发网络连接:ss -s 查总连接数,nethogs 看实时带宽归属
  • 文件描述符耗尽:lsof -n | awk '{print $2}' | sort | uniq -c | sort -nr | head

基本上就这些。不复杂但容易忽略——尤其是把load avg和CPU使用率混为一谈,或者只盯top不看iostat。养成先判类型、再锁进程、最后查上下文的习惯,排查效率能翻倍。

text=ZqhQzanResources