我遇到了这个 Apache 配置:
<IfModule mpm_prefork_module>
StartServers 16
MinSpareServers 16
MaxSpareServers 32
ServerLimit 400
MaxClients 400
MaxRequestsPerChild 10000
</IfModule>
<IfModule mpm_worker_module>
StartServers 4
MaxClients 1024
MinSpareThreads 64
MaxSpareThreads 192
ThreadsPerChild 64
MaxRequestsPerChild 0
</IfModule>
目前只安装了 mpm_prefork_module。但是如果服务器上安装了 mpm_worker_module 会发生什么?这个配置让我很担心。
这个问题类似,但答案只说如何找到当前正在使用的 MPM,而不是标准行为是什么,或者行为是否未定义。
答案1
不可能同时使用两者 - 每次只能使用其中一个 MPM。
如何配置正在使用哪个取决于您的发行版如何处理它,但是您不应该在同一个运行实例中同时担心这两者,因为那是不可能发生的。
答案2
默认情况下,当您从二进制文件(rpm、deb 等)或通过 yum、apt-get 等安装它们时,它总是使用 prefork。如果您想使用 worker 运行,则需要从源代码构建。但是,如果您运行 fcgi php,worker 才能发挥最佳作用。