温馨提示×

centos进程负载高怎么办

小樊
48
2026-10-12 01:11:16
栏目: 智能运维

在 CentOS 上发现**进程负载高(Load Average 高 / CPU 占用高)**时,可以按下面步骤逐步排查和处理。


一、先确认“负载高”是什么情况

1. 查看系统负载

uptime
top

关注:

  • load average(1 / 5 / 15 分钟)
  • 是否持续升高
  • CPU、内存、IO 占用情况

2. 查看进程级占用

top
# 或
htop   # 需安装

按 P(CPU)或 M(内存)排序,找占用高的进程。


二、常见原因 & 对应处理方式

1️⃣ CPU 被某个进程占满

现象:top 里某个进程 CPU 接近 100%+

处理:

  • 确认进程是否必要
ps -ef | grep 进程名
  • 若是异常进程(如挖矿、未知脚本):
kill -9 PID
  • 若是业务程序:
    • 优化代码
    • 限制资源(见下文)

2️⃣ 内存不足导致频繁 Swap

现象:

  • load 高但 CPU 不高
  • si/so(swap)很高
free -h
vmstat 1

处理:

  • 释放内存
  • 增加物理内存
  • 调整 swappiness
sysctl vm.swappiness=10

3️⃣ 磁盘 IO 瓶颈

现象:

  • top 中 wa(iowait)很高
  • 进程处于 D 状态(不可中断)
iostat -x 1
iotop

处理:

  • 找出高 IO 进程
  • 优化日志、数据库
  • 更换磁盘 / 使用 SSD

4️⃣ 进程数过多 / 线程爆炸

ps -eLf | wc -l
pstree -p | wc -l

处理:

  • 限制服务进程数(如 Nginx、PHP-FPM)
  • 检查是否有 fork 炸弹

5️⃣ 被攻击(CC / 挖矿 / 木马)

现象:

  • 不知名进程占 CPU
  • 网络流量异常
netstat -antup
lsof -p PID

处理:

  • 杀进程
  • 断网排查
  • 重装或清理后加固

三、临时“降负载”手段(应急)

限制 CPU 使用

cpulimit -p PID -l 50

降低进程优先级

renice 19 PID

暂停进程

kill -STOP PID
kill -CONT PID

四、长期优化建议

  • 监控:
    • zabbix / prometheus / grafana
  • 日志轮转:logrotate
  • 内核参数优化
  • 定期安全检查

五、如果你愿意,我可以:

  • 帮你分析 top / ps 输出
  • 判断是 CPU / IO / 内存 问题
  • 针对 具体进程给处理方案

你可以直接贴一下:

top -b -n1 | head -30

或

uptime
free -h

0 踩