Cuando apache bifurca un proceso para mod-php, ¿cuánto tiempo permanece vivo? ¿El proceso muere tan pronto como se envía la respuesta, o se mantendrá vivo hasta que el navegador reciba la respuesta completa?
Cuando apache bifurca un proceso para mod-php, ¿cuánto tiempo permanece vivo? ¿El proceso muere tan pronto como se envía la respuesta, o se mantendrá vivo hasta que el navegador reciba la respuesta completa?
Respuestas:
Si está utilizando mod-php, es probable que esté utilizando el prefork
MPM, que genera procesos secundarios para manejar solicitudes. El número y la vida útil de estos niños según las directivas en su archivo principal apache2.conf
(o httpd.conf
, según su distribución).
Busque la parte que se ve así (sus valores pueden variar):
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Apache genera StartServers
niños automáticamente. Estos procesos permanecerán inactivos hasta que llegue una solicitud. Si los niños se vuelven ocupados, se generará para que los MaxClients
niños manejen la carga, tratando de mantener a los MinSpareServers
niños inactivos para recoger nuevas solicitudes. Una vez que las cosas se calmen, los niños inactivos serán asesinados hasta que se reduzca el conteo MaxSpareServers
.
El bit por el que estás preguntando es manejado por MaxRequestsPerChild
. Establecido en 0, esto significa que los niños pueden vivir para siempre, que es el valor predeterminado en la mayoría de las instalaciones de Apache. Establecido en cualquier otra cosa, significa que cada proceso secundario se eliminará y reiniciará por la fuerza, independientemente de la carga actual, una vez que haya manejado esa cantidad de solicitudes.
Más detalles sobre el MPM prefork aquí: http://httpd.apache.org/docs/2.2/mod/prefork.html
httpd no bifurca un proceso para mod_php. Bifurca un proceso por sí mismo, que tiene mod_php incrustado en él. El niño permanecerá vivo hasta que haya cumplido las MaxRequestsPerChild
solicitudes. mod_php seguirá manejando cada solicitud de un script PHP hasta que el script salga o se exceda el límite de tiempo.