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


9

当Apache为mod-php派生一个进程时,它可以存活多长时间?该进程是否在发送响应后立即终止,还是保持活动状态直到浏览器收到完整响应?

Answers:


9

如果您使用的是mod-php,则可能使用的是preforkMPM,它会产生子进程来处理请求。这些子代的数量和生存期由主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


谢谢,这使我对Apache有了更好的了解。我的具体问题是:将响应发送回客户端时,子进程会做什么?它是闲置等待客户端确认还是可以立即处理新请求?
杰米·克林顿

一旦发送了响应并且客户端确认了响应,默认情况下,TCP连接将保持打开状态(我认为)为15秒。在这段时间内,孩子将首先从同一个客户端接收任何其他HTTP请求。如果未收到任何消息,则将关闭TCP连接,并根据上述规则处理子项。通常,它保持活动状态并返回到空闲池。客户端和服务器均可修改此行为。(例如,最好立即关闭连接)
SmallClanger

另外,如果您还没有使用过它,wireshark.org是分析客户端和服务器之间流量的绝佳工具。它可以使您深入了解幕后情况。
SmallClanger

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.