Apache 进程可以存活多长时间?

Apache 进程可以存活多长时间?

当 apache 为 mod-php 派生一个进程时,它会存活多久?该​​进程会在响应发送后立即终止吗?还是会一直存活到浏览器收到完整响应为止?

答案1

如果您使用的是 mod-php,那么您可能正在使用 MPM prefork,它会生成子进程来处理请求。这些子进程的数量和生命周期由主文件中的指令控制apache2.conf(或httpd.conf,取决于您的发行版)。

寻找如下所示的部分(您的值可能会有所不同):

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

Apache 会StartServers自动生成子进程。这些进程将处于空闲状态,直到收到请求。如果子进程变得繁忙,它将生成多达MaxClients子进程来处理负载,并尝试维持MinSpareServers空闲子进程以接收新请求。一旦情况平静下来,空闲子进程将被终止,直到数量降至MaxSpareServers

您询问的位由 处理MaxRequestsPerChild。设置为 0,这意味着子进程可以永远存在,这是大多数 Apache 安装中的默认值。设置为其他任何值,都意味着一旦处理了该数量的请求,每个子进程都将被强制终止并重新启动,无论当前负载如何。

有关 prefork MPM 的更多详细信息请参见此处:http://httpd.apache.org/docs/2.2/mod/prefork.html

答案2

httpd 不会为 mod_php 派生进程。它为自己派生一个进程,该进程中嵌入了 mod_php。子进程将一直保持活动状态,直到它完成MaxRequestsPerChild请求。mod_php 本身将继续处理 PHP 脚本的每个请求,直到脚本退出或超出时间限制。

相关内容