我将 ServerLimt 设置为 15,将 MaxClients 设置为 8,但有时我会看到 150 个 Apache 进程。这是为什么?
我有 Apache/2.4.7 (Ubuntu),MPM:prefork
StartServers 1
MinSpareServers 1
MaxSpareServers 2
Serverlimit 15
MaxClients 8
MaxRequestsPerChild 50
启动服务器后不久,我就能看到 11 个 Apache 进程:一个父进程和 10 个子进程。基于此,我推测 10 个子进程中的 8 个是因为“MaxClients”设置,另外 2 个是因为我设置了“MaxSpareServers=2”而产生的。
有时,进程数会超过 15。我不明白在 Serverlimit 为 15 的情况下怎么会发生这种情况。但真正的问题是,偶尔进程数会飙升至 150 左右,从而耗尽 RAM。
文档中说“使用 prefork MPM 时,仅当需要将 MaxClients 设置为高于 256(默认值)时才使用此指令。不要将此指令的值设置为高于您想要设置的 MaxClients 值。”
第一句话似乎说我不应该碰它,但第二句话似乎建议我应该将它降低到与 MaxClients 匹配。
底线:如果 Serverlimit 不起作用,我还能如何对 Apache 进程的数量设置硬限制。
答案1
您确定 apache 正在读取正确的配置文件和/或您正在使用 prefork mpm 吗?
使用以下命令检查实际配置(特别是 mpm 和您编写的配置):
apache2ctl -S
以防万一将它们发布在这里。