我们通过 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
了解有关每个进程正在执行的操作的详细信息。只需确保充分保护它即可。