当 mpm_prefork_module 和 mpm_worker_module 同时使用时会发生什么?

当 mpm_prefork_module 和 mpm_worker_module 同时使用时会发生什么?

我遇到了这个 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 才能发挥最佳作用。

相关内容