Apache 作为后端服务器不会杀死孩子

Apache 作为后端服务器不会杀死孩子

我将 apache 作为 nginx 的后端服务器。这是我使用的 prefork MPM 的配置:

StartServers          1
MinSpareServers       1
MaxSpareServers       5
MaxClients           10
MaxRequestsPerChild   0

如您所见,MinSpareServers 为 1,这意味着 apache 将终止所有空闲进程,直到只剩下一个。当我重新启动服务器时 - 一切正常,系统中只有 2 个 apache 进程(父进程和子进程)。加载页面后,apache 开始生成子进程,当页面加载完成后 - apache 有 5 个子进程。我的服务器上的负载很低,所以我认为没有必要再添加子进程。我该如何让 apache 正常工作?

答案1

Apache 完全按照预期运行。Prefork MPM 按照每个请求一个进程的原则运行。

您的浏览器使用大约 8 个并发连接来并行加载页面。因此,您的服务器上将启动 8 个进程,直到请求完成且浏览器断开连接。父服务器将看到有未使用的服务器超出了您的MaxSpareServers指令,并终止其中 3 个以使其符合您的配置。

您希望子进程在客户端连接到达之前就存在。这样可以加快一切速度。这不是一件坏事。

答案2

如果空闲的进程超过 MaxSpareServers,则父进程将终止多余的进程。除非是可用内存很少的嵌入式系统,否则你所做的毫无意义。

答案3

您已将MaxSpareServers 设置为 5,这是您需要调整的数字,因为它是允许的最大空闲服务器数量。如果空闲服务器数量超过 MaxSpareServers,则父进程将终止多余的进程。

可以将 MaxSpareServers 设置为的最低数字是 MinSpareServers +1。

http://httpd.apache.org/docs/2.2/mod/prefork.html

相关内容