Apache 增加子进程,直到 MaxRequestWorkers 达到

Apache 增加子进程,直到 MaxRequestWorkers 达到

我的 Ubuntu 服务器已经运行了六个月,但上周开始有点问题。过去几个月我没有对配置进行任何更改,所以我很困惑...这就是我要做的事情!

我对 Munin 做了一些挖掘(截屏)Apache 似乎在生成工作进程,直到达到 prefork 中设置的限制,然后变得无响应(或者从显示的白色开始,可能完全停止响应)。服务器整体上仍然健康,对 SSH/FTP 等响应良好,内存和 CPU 使用率也在限制范围内。该服务器是一台 Ubuntu VPS,托管大约 50 个网站,所有网站的流量都很低——服务器上所有网站每天的点击量可能只有 500 次。

毫不奇怪,当 Munin 显示我们已达到最大值时,Apache 会抛出一个错误:

[Tue Mar 10 23:33:57.643098 2015] [mpm_prefork:error] [pid 17764] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting

当然,我可以增加 RequestWorkers 的数量,但是,我认为这只是一种权宜之计,并不能解决真正的问题,因为这种“增加”至少有时会在一夜之间发生 - 此时服务器实际上应该不会收到任何请求。

这是我的 prefork 模块配置:

<IfModule mpm_prefork_module>
    StartServers            4
    MaxClients              35
    MinSpareServers         4
    MaxSpareServers         8
    MaxRequestWorkers       64
    MaxConnectionsPerChild  100
</IfModule>

最初(在我昨天开始尝试排除故障之前),MaxConnectionsPerChild 参数为 0。我在很多地方都看到,这将导致 Apache 不释放未使用的工作线程。我将其更改为 100(我相信),但当我今天早上在最新的“加速”之后进来时,它被重置回零(尽管我的其他更改 – 将 MaxClients 更改为 35,但卡住了)。

我在 ServerFault 上看到的唯一类似报告是。我尝试移除 APCU,但这并没有什么不同,而且昨晚也出现了类似的“加速”现象。

亲爱的朋友们,有什么想法吗?

相关内容