我将 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
您已将MaxSpareServer
s 设置为 5,这是您需要调整的数字,因为它是允许的最大空闲服务器数量。如果空闲服务器数量超过 MaxSpareServers,则父进程将终止多余的进程。
可以将 MaxSpareServers 设置为的最低数字是 MinSpareServers +1。