Apache prefork进程丢失

我们通过cacti监视apache进程的数量。 我注意到这个过程达到了70,然后下降到了20。 什么可以导致Apache做到这一点? 这是我们的prefork设置

StartServers 50 MinSpareServers 10 MaxSpareServers 100 ServerLimit 250 MaxClients 250 MaxRequestsPerChild 3000 

您有StartServers> MinSpareServers和MaxRequestsPerChild集。

这意味着服务器处理了3000个请求后,它将会死亡。 然后控制器将查看其余的服务器,并将闲置的数字相加。 如果这个至less10,那么它不会重新启动一个。

因此,它看起来像你的网站同时服务10个请求,这是正常的行为。

这可能是因为你的网站有特别的“突发”types的点击,一次请求很多。 如果是这种情况,您可能需要增加MinSpareServers。

从您的设置..

Apache将始终以50( StartServers )进程开始。 从那里开始,除了正在服务请求的任何进程之外,它将保持10( MinSpareServers )和100( MaxSpareServers )空闲进程在运行,这些进程不是当前服务于任何请求的进程。 空闲和活动进程的总数不会超过250( MaxServers )。 一旦服务器发出3000( MaxRequestsPerChild )请求,每个进程将被MaxRequestsPerChild

20个进程的计数意味着至less有10个或更多的进程处于空闲状态,等待服务请求。 其余的可能是闲置或活动。 Apache将根据负载在您指定的参数范围内缩放进程的数量。

你可能希望看看mod_status以获得关于每个进程正在做什么的更多详细信息。 只要确保足够的安全。