温馨提示×

centos进程太多怎么处理

小樊
43
2026-10-09 02:48:02
栏目: 智能运维

在 CentOS 系统中,如果发现进程太多(系统卡顿、负载高、连接数暴涨等),可以按下面思路逐步排查和处理。


一、先确认“进程多”的原因

1. 查看进程总数

ps -e | wc -l

或

top

2. 按进程数排序(看是谁产生大量进程)

ps -eo pid,ppid,user,comm | awk '{print $3}' | sort | uniq -c | sort -nr

3. 查看具体是什么进程

top
# 或
htop   # 需安装

常见原因:

  • fork 炸弹
  • 脚本死循环不断 fork
  • Web 服务(php/java/nginx)异常
  • cron 任务异常
  • 被攻击(CC / 爆破 / 挖矿)

二、紧急处理(先止血)

1. 找出“父进程”并杀掉

pstree -p

或

ps -ef --forest

例如发现 php-fpm 产生大量子进程:

pkill -9 php-fpm

⚠️ 慎用 kill -9 -1(会杀光所有进程)


2. 限制最大进程数(临时)

ulimit -u 1000

(仅对当前 shell 有效)


三、长期治理方案

1. 限制用户进程数(推荐)

编辑:

vi /etc/security/limits.conf

示例:

* soft nproc 1024
* hard nproc 2048

2. 限制服务进程数

Nginx

worker_processes  2;
worker_connections 1024;

PHP-FPM

pm = dynamic
pm.max_children = 50

MySQL

max_connections = 200

3. 检查并优化 cron

crontab -l
ls /etc/cron*

防止脚本重复执行:

flock -n /tmp/lock.lock your_script.sh

4. 防攻击(如果是外部请求导致)

  • 限制连接数(iptables / firewalld)
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
  • 使用 fail2ban
  • 云服务器开启安全组限速

5. 检查是否被植入挖矿/木马

top
netstat -antup
ls /tmp
crontab -l

重点看:

  • CPU 异常高
  • 未知进程
  • /tmp 下脚本

四、如果系统已经卡死

  1. 尝试 Ctrl + Alt + Del(软重启)
  2. 云控制台 → 强制重启
  3. 重启后立刻排查日志:
/var/log/messages
/var/log/secure
/var/log/cron

五、总结处理流程

✅ 看进程 → 找父进程
✅ 杀异常进程 → 临时止血
✅ 查原因(服务 / 脚本 / 攻击)
✅ 限制进程数 + 安全防护


如果你愿意,可以把:

  • top 或 ps aux 前 20 行
  • 或具体报错

发给我,我可以帮你精准判断是哪种进程爆炸。

0 踩