Cuello de botella de Apache frente a PHP-FPM con procesos secundarios

Cuello de botella de Apache frente a PHP-FPM con procesos secundarios


Última modificación: 11 de marzo de 2021

Visión general

Servidores Apache que utilizan prefork MPM con menos instancias de servidor que el número máximo de procesos secundarios PHP-FPM puede experimentar problemas de rendimiento. Este documento explica cómo resolver estos problemas de dependencia.

Importante:

Este problema y solución solamente aplicar a servidores que ejecutan Apache prefork MPM.

La cuestión

En el siguiente escenario, la configuración del servidor PHP-FPM permite un máximo de 20 procesos secundarios PHP-FPM y la configuración del servidor Apache permite cinco instancias de servidor.

El siguiente ejemplo representa el archivo de configuración del servidor PHP-FPM:

1
2
3
_is_present: 1
pm_max_children: 20
pm_max_requests: 20

El siguiente ejemplo representa el archivo de configuración del servidor Apache:

1
2
3
4
5
StartServers: 5
<IfModule prefork.c>
MinSpareServers: 10
MaxSpareServers: 10
</IfModule>

Si el servidor Apache recibe 20 solicitudes, inmediatamente pasa diez de esas solicitudes a los procesos secundarios PHP-FPM disponibles. Después de que PHP-FPM procese esas solicitudes, Apache pasará otras diez solicitudes a PHP-FPM.

Advertencia:

Para servidores de gran volumen, esta configuración puede causar graves problemas de rendimiento.

La solución

Para resolver este problema, debe configure Apache para permitir suficientes instancias de servidor para manejar el número máximo de procesos secundarios PHP-FPM. Para hacer esto, configure las siguientes opciones en WHM configuración global interfaz (WHM >> Inicio >> Configuración del servicio >> Configuración global):

  • Servidores de repuesto mínimos

  • Máximo de servidores de repuesto

  • Trabajadores de solicitud máxima

Establezca estas opciones en un valor mayor o igual que el pm_max_children en el archivo de configuración del servidor PHP-FPM.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *