Apache:MaxSpareServers与ServerLimit?

我目前正在调查一些服务器的问题,在这些服务器中,Apache进程最终吃掉了大量的内存,导致交换文件崩溃,导致服务器在遇到高峰时不响应。 看一个特定问题服务器的Apache conf,我在conf文件中看到这个:

StartServers 50 MinSpareServers 25 MaxSpareServers 90 ServerLimit 185 MaxClients 185 MaxRequestsPerChild 4000

有问题的服务器当前有185个备用的Apache进程正在运行,在服务器上可用的6.2GB的7.2GB。 但是,Apache不应该只有90个活动进程? 它似乎是使用ServerLimit而不是MaxSpareServers来确定机器上有多less活动的Apache进程。 我会理解,如果这是在高峰stream量时间这样做,但即使几乎没有任何stream量到服务器,总是有185个httpd进程在服务器上运行。

configuration:Apache 2.2.15 PHP 5.3.3 Redhat Linux Enterprise 6.3

那么为什么当我的MaxSpare设置被限制在90时总是有185个Apache进程在运行?

你的configuration如图所示不应该导致185.这可能是由于某种原因,你实际上同时有这么多的请求(如缓慢的HTTP DoS攻击)。 看看什么mod_status显示你进一步调查(请参阅http://httpd.apache.org/docs/2.2/mod/mod_status.html如何启用它)。