“Linux 进程负载高”是一个常见但原因很多的问题。可以按先定位、再分析、后处理的思路来解决。
uptime
top
关注:
load average(1 / 5 / 15 分钟)例如 4 核机器,load > 4 就偏高。
top
看:
%CPU 高 → CPU 密集型%MEM 高 → 内存问题wa(iowait)高 → 磁盘 IO 问题D(不可中断睡眠)→ 通常在等 IOtop
# 或
htop
按 P 按 CPU 排序,按 M 按内存排序。
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head
可能原因:
处理:
# 查看线程级 CPU
top -H -p <pid>
# 查看调用栈
perf top -p <pid>
临时措施:
kill -STOP <pid> # 暂停
kill -CONT <pid> # 恢复
kill <pid> # 终止
现象:
swapOOM Killer 日志检查:
free -h
vmstat 1
dmesg | grep oom
处理:
检查:
iostat -x 1
iotop
处理:
ps -eo pid,stat,cmd | grep D
处理:
检查:
ss -antp | wc -l
netstat -an | grep ESTABLISHED | wc -l
✅ 不要盲目 kill
✅ 保留现场再处理
✅ 长周期监控:
sar -u 1 10
atop
✅ 对关键进程做资源限制(systemd example):
[Service]
MemoryLimit=512M
CPUQuota=80%
你可以提供:
top / uptime 输出我可以直接帮你分析“这个进程为什么高、该怎么处理”。