Apache 进程的洪流导致服务器瘫痪

Apache 进程的洪流导致服务器瘫痪

我们在 CentOS 7 上运行 LAMP 堆栈。已经运行了大约一年。

但今天我们看到loading averages流量暴增。我们检查后发现top没有看到任何高负载的特定进程,但有很多 Apache 进程在运行。

尝试重启阿帕奇几次,但没有帮助。

最终决定重启MySQL。这暂时降低了负载,但持续时间不长。

然后决定重启服务器。这也只是暂时降低了负载。

日志没有显示太多的外部连接:

$ sudo tail -n 500 /var/log/httpd/access_log | cut -d' ' -f1 | sort | uniq -c | sort -gr
395 ::1
101 127.0.0.1
3 66.102.6.91
1 66.102.6.89

发生了什么事?我们该如何解决这个问题?

编辑 1:更多细节

平均负载在 50 到 300 之间。在某些时候,我们遇到了以下情况:

 $ uptime
     10:33:28 up 317 days, 22:36,  2 users,  load average: 81.21, 75.67, 75.62

稍后检查:

$ uptime
12:41:50 up 50 min,  2 users,  load average: 227.67, 147.99, 75.37

下列的Apache 产生数百个进程并推高平均负载我们检查了配置,但没有看到服务器限制或任何其他参数:

$ less /etc/httpd/conf/httpd.conf | grep ServerLimit
$ 

答案1

您的系统显然超载了。您应该安装监控,使用它来收集数据,然后应用科学的方法——这是唯一可以确定的方法。

进一步阅读:

CentOS 中睡眠进程数量过多-如何诊断?

相关内容