Apache prefork 进程丢失

Apache prefork 进程丢失

我们通过 cacti 监控 apache 进程的数量。我注意到进程数最多为 70 个,然后又下降到 20 个左右。什么原因导致 apache 出现这种情况?以下是我们的 prefork 设置

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

答案1

您已设置 StartServers > MinSpareServers 和 MaxRequestsPerChild。

这意味着,当服务器处理完 3000 个请求后,它就会停止运行。然后,控制器会查看其余的服务器,并统计出空闲的服务器数量。如果空闲的服务器数量至少为 10 个,则不会重新启动任何一台。

因此看起来您的网站同时处理大约 10 个请求,这是正常行为。

您的网站可能具有特别“突发”类型的点击,即同时收到大量请求。如果是这种情况,您可能需要增加 MinSpareServers。

答案2

从您的设置..

Apache 始终以 50 ( StartServers) 个进程开始运行。从那时起,除了正在处理请求的进程外,它还会保持 10 ( MinSpareServers) 到 100 ( MaxSpareServers) 个空闲进程运行,这些进程当前不处理任何请求。空闲和活动进程的总数永远不会超过 250 ( MaxServers)。每个进程在处理了 3000 ( ) 个请求后将被终止MaxRequestsPerChild

20 个进程意味着其中至少有 10 个或更多进程处于空闲状态,等待处理请求。其余进程可能处于空闲或活动状态。Apache 将根据负载在您指定的参数范围内增加或减少进程数量。

您可能希望查看mod_status了解有关每个进程正在执行的操作的详细信息。只需确保充分保护它即可。

相关内容