Apache进程保持多久?

当apache为mod-php派生一个进程时,它活着多久? 响应被发送后,进程是否会死亡,或者直到浏览器收到完整响应后才会保持活动状态?

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

寻找看起来像这样的部分(您的值可能会有所不同):

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

Apache自动产生StartServers子项。 这些进程将一直处于空闲状态,直到请求进入。如果subprocess忙,则会产生MaxClientssubprocess来处理负载,试图维护MinSpareServers空闲subprocess来接收新的请求。 一旦事情平静下来,空闲的孩子将被杀死,直到数量减less到MaxSpareServers

你询问的位是由MaxRequestsPerChild处理的。 设置为0,这意味着孩子们可以永远活着,这是大多数Apache安装中的默认值。 设置其他任何东西,这意味着每个subprocess将被强行杀死,并重新启动,无论当前的负载,一旦处理了这个请求数量。

关于prefork MPM的更多细节在这里: http : //httpd.apache.org/docs/2.2/mod/prefork.html

httpd不会为mod_php分叉进程。 它为自己分配了一个mod_php的进程。 这个孩子会一直活着,直到完成MaxRequestsPerChild请求。 mod_php本身将继续处理PHP脚本的每个请求,直到脚本退出或超出时间限制。