当apache对mod-php进程进行分叉处理时,它能存活多久?该进程是在发送响应后立即死亡,还是在浏览器接收到完整响应之前仍然处于活动状态?
发布于 2011-05-31 18:11:17
如果您使用的是mod-php,那么很可能使用prefork MPM,它生成子进程来处理请求。由主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安装中的默认值。在任何其他情况下,这意味着每个子进程一旦处理了该数量的请求,就会被强制终止和重新启动,而不管当前负载如何。
更多关于预叉MPM的详细信息,在这里:http://httpd.apache.org/docs/2.2/mod/prefork.html
发布于 2011-05-31 18:10:40
httpd不为mod_php分进程。它为自己分叉一个进程,其中嵌入了mod_php。孩子将一直活着,直到它满足了MaxRequestsPerChild请求。mod_php本身将继续处理对PHP的每个请求,直到脚本退出或超出时限。
https://serverfault.com/questions/275601
复制相似问题