因未关闭MySQL连接导致Apache睡眠进程引发LAMP服务器宕机求助
解决Apache睡眠进程堆积导致LAMP服务器宕机的问题
这问题我维护高负载LAMP集群时碰到过好几次,核心就是Apache的S状态(可中断睡眠)worker进程一直无法正常回收,慢慢堆积到MaxRequestWorkers上限,最终导致新连接无法建立、服务器宕机。下面给你一套从排查到根治的方案:
一、先搞懂为什么会出现堆积的睡眠进程
正常情况下,Apache的worker进程处理完请求后会回到S状态,等待新的请求进来。但如果进程一直卡在S状态不释放,大概率是以下原因:
- PHP脚本执行卡住(比如死循环、调用慢外部接口未加超时、数据库慢查询挂起)
- Apache的KeepAlive配置不合理,导致空闲进程长时间占用资源
- 后端服务(如MySQL)响应超时,Apache进程一直等待后端返回
- Apache本身的进程回收机制未配置,导致内存泄漏或进程异常无法退出
二、第一步:排查关键配置与进程状态
1. 检查Apache核心配置
先确认几个影响进程数量的关键参数,执行命令:
apache2ctl -D DUMP_RUNNING_CONFIG | grep -E "MaxRequestWorkers|KeepAliveTimeout|MaxKeepAliveRequests|Timeout|MaxConnectionsPerChild"
重点关注:
MaxRequestWorkers:允许的最大worker进程数,这就是导致宕机的上限值KeepAliveTimeout:空闲KeepAlive连接的超时时间,太长会让进程一直处于空闲等待MaxConnectionsPerChild:每个进程处理的最大请求数,0表示不限制(容易导致异常进程堆积)
2. 跟踪卡住的进程
用strace查看异常进程的系统调用,比如你提到的PID 6259:
strace -p 6259
如果看到进程一直卡在poll()/select(),说明它在等待后端服务(比如MySQL)的响应;如果卡在read(),可能是客户端连接未正常关闭但没有数据传输。
也可以用lsof查看进程打开的文件和连接,定位异常资源:
lsof -p 6259
3. 启用Apache状态监控
开启mod_status模块(大部分默认已开启),访问http://你的服务器IP/server-status?auto,可以看到:
- 每个进程的状态(
S=空闲、W=正在处理) - 当前处理的请求URI(直接定位到卡住的请求来源)
- 进程的累计请求数、空闲时间等关键数据
三、针对性解决方法
1. 调整Apache进程回收与超时配置
- 给进程设置自动回收:添加或修改
MaxConnectionsPerChild 1000,让每个worker进程处理1000个请求后自动退出,Apache会生成新进程替换,避免异常进程堆积。 - 缩短空闲超时:将
KeepAliveTimeout改成5(默认可能是5-15秒),MaxKeepAliveRequests改成100,让空闲进程更快释放。 - 设置全局超时:
Timeout 60,让Apache在60秒内无请求活动就关闭连接;如果用的是Apache 2.4+,可以启用mod_request,配置RequestReadTimeout更精细控制请求读取超时:RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
2. 排查并优化PHP脚本
大部分睡眠进程堆积都是PHP脚本导致的:
- 检查PHP的
max_execution_time,建议设置为30秒(避免脚本无限执行) - 给数据库查询加索引,用
EXPLAIN分析慢查询,避免进程卡在数据库请求上 - 外部API调用必须加超时(比如curl设置
CURLOPT_TIMEOUT=10),防止脚本等待无响应的外部服务 - 如果用mod_php,确保PHP的错误日志开启,查看是否有脚本报错导致进程挂起
3. 临时应急处理
如果服务器已经接近进程上限,先手动清理异常睡眠进程:
# 只杀死处于S状态的apache进程 ps aux | grep apache2 | grep " S " | awk '{print $2}' | xargs kill -TERM
注意:这只是临时缓解,一定要找到根源解决。
四、验证效果
调整配置后重启Apache:
systemctl restart apache2
然后持续监控server-status,观察睡眠进程的数量是否稳定,不再持续增长;同时监控服务器的netstat -anp | grep apache2连接数,确保不会再触发MaxRequestWorkers上限。
内容的提问来源于stack exchange,提问作者pierreaurelemartin
相关产品推荐
相关产品推荐

