Quand apache bifurque un processus pour mod-php, combien de temps reste-t-il vivant? Le processus se termine-t-il dès que la réponse est envoyée, ou restera-t-il actif jusqu'à ce que le navigateur reçoive la réponse complète?
Quand apache bifurque un processus pour mod-php, combien de temps reste-t-il vivant? Le processus se termine-t-il dès que la réponse est envoyée, ou restera-t-il actif jusqu'à ce que le navigateur reçoive la réponse complète?
Réponses:
Si vous utilisez mod-php, vous utilisez probablement le prefork
MPM, qui génère des processus enfants pour gérer les demandes. Le nombre et la durée de vie de ces enfants régis par les directives de votre fichier principal apache2.conf
(ou httpd.conf
, selon votre distribution).
Recherchez la pièce qui ressemble à ceci (vos valeurs peuvent varier):
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Apache génère StartServers
automatiquement les enfants. Ces processus resteront inactifs jusqu'à ce qu'une demande arrive. Si les enfants deviennent occupés, cela engendrera des MaxClients
enfants pour gérer la charge, essayant de maintenir MinSpareServers
les enfants inactifs pour récupérer de nouvelles demandes. Une fois que les choses se seront calmées, les enfants inactifs seront tués jusqu'à ce que le nombre soit tombé MaxSpareServers
.
Le bit dont vous parlez est géré par MaxRequestsPerChild
. Fixé à 0, cela signifie que les enfants peuvent vivre éternellement, ce qui est la valeur par défaut dans la plupart des installations Apache. Défini sur autre chose, cela signifie que chaque processus enfant sera tué et redémarré de force, quelle que soit la charge actuelle, une fois qu'il aura traité ce nombre de demandes.
Plus de détails sur le MPM prefork ici: http://httpd.apache.org/docs/2.2/mod/prefork.html
httpd ne crée pas de processus pour mod_php. Il bifurque un processus pour lui-même, qui contient mod_php. L'enfant restera en vie jusqu'à ce qu'il ait satisfait aux MaxRequestsPerChild
demandes. mod_php lui-même continuera à gérer chaque demande de script PHP jusqu'à ce que le script se termine ou que la limite de temps soit dépassée.