Quando o apache bifurca um processo para o mod-php, por quanto tempo ele permanece vivo? O processo morre assim que a resposta é enviada ou permanece ativo até que o navegador receba a resposta completa?
Quando o apache bifurca um processo para o mod-php, por quanto tempo ele permanece vivo? O processo morre assim que a resposta é enviada ou permanece ativo até que o navegador receba a resposta completa?
Respostas:
Se você estiver usando o mod-php, provavelmente prefork
usará o MPM, que gera processos filhos para lidar com solicitações. O número e a vida útil dessas crianças, conforme regido pelas diretivas em seu arquivo principal apache2.conf
(ou httpd.conf
, dependendo da sua distribuição).
Procure a parte que se parece com isso (seus valores podem variar):
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
O Apache gera StartServers
crianças automaticamente. Esses processos ficarão inativos até que uma solicitação seja recebida. Se as crianças ficarem ocupadas, elas aparecerão MaxClients
para lidar com a carga, tentando manter MinSpareServers
as crianças inativas para receber novas solicitações. Quando as coisas se acalmarem, as crianças ociosas serão mortas até que a contagem diminua MaxSpareServers
.
O que você está perguntando é tratado MaxRequestsPerChild
. Definido como 0, isso significa que os filhos podem viver para sempre, que é o valor padrão na maioria das instalações do apache. Definido como qualquer outra coisa, significa que cada processo filho será forçado a ser morto e reiniciado, independentemente da carga atual, uma vez que ele tenha tratado esse número de solicitações.
Mais detalhes sobre o MPM prefork aqui: http://httpd.apache.org/docs/2.2/mod/prefork.html
O httpd não bifurca um processo para o mod_php. Ele bifurca um processo para si mesmo, com o mod_php incorporado. A criança permanecerá viva até que tenha cumprido os MaxRequestsPerChild
pedidos. O próprio mod_php continuará manipulando cada solicitação de um script PHP até que o script saia ou o limite de tempo seja excedido.