¿Por qué mi página web agota los Max Children de PHP?

Hashtags: #php #fpm #limites

¿Qué es max_children y qué hace?

La variable max_children de PHP es una configuración que controla la cantidad máxima de solicitudes PHP que pueden ejecutarse al mismo tiempo en un sitio web. Este límite ayuda a proteger al servidor de scripts que son lentos o tienen errores y podrían consumir toda la memoria disponible.

¿Qué sucede cuando se alcanza el límite de max_children?

  1. Si los scripts de la página web no pueden responder a las solicitudes existentes antes de que lleguen nuevas solicitudes, PHP-FPM generará procesos PHP adicionales para manejarlas en paralelo.

  2. PHP-FPM seguirá generando más procesos PHP adicionales a medida que las solicitudes se acumulen en la página web.

  3. Sin embargo, una vez que el número de procesos alcanza el límite establecido por max_children, PHP-FPM dejará de generar procesos PHP adicionales.

  4. En ese momento, las solicitudes adicionales se colocarán en una cola de espera y solo se responderán una vez que una solicitud existente se complete.

Importante: La variable max_children no determina el número de visitantes simultáneos que puede tener tu página web. El número de visitantes simultáneos puede ser mucho mayor que la configuración de max_children.

Es importante tener en cuenta que la variable max_children no limita el número de visitantes simultáneos que puede tener tu sitio web, sino el número máximo de solicitudes PHP que se ejecutan al mismo tiempo.

Dado que los visitantes de un sitio web generalmente realizan solicitudes cada pocos segundos y el tiempo de ejecución de PHP es solo una pequeña parte del tiempo total necesario para completar una solicitud, el número de visitantes que tu página web puede manejar es mucho mayor que el límite establecido por max_children.

Ejemplo de funcionamiento:

Cada visitante de tu pagina web hace clic en un enlace o envía un formulario cada 10 segundos. Cada script PHP solicitado tarda 10 milisegundos en ejecutarse.

Según ese ejemplo, las primeras 10 solicitudes se ejecutarán de inmediato, y las siguientes 5 que lleguen se pondrán en espera hasta que se vayan completando las solicitudes anteriores. Cada solicitud resuelta dejará lugar a una solicitud en espera, y así hasta terminar con todas. El número de visitantes a tu página web será, seguramente, mayor que el límite de max_children, pero, debido a los intervalos de tiempo entre las acciones de los visitantes y al tiempo de ejecución relativamente corto de los scripts PHP, el sitio web aún podrá responder a todas las solicitudes de manera eficiente.

Por lo tanto, con un max_children de 10, tu pagina web podrá admitir hasta 10,000 visitantes al mismo tiempo.

Podrás darte cuenta lo importante que es la ejecución rápida de los scripts PHP. Si cada solicitud PHP tardara 2 segundos en ejecutarse, en vez de 10 milisegundos, la página web solo podría admitir 100 visitantes al mismo tiempo.

Alcanzar el límite de max_children es indicativo de que alguna parte de la página web está ejecutando un proceso PHP demasiado lento.

En caso de usar plataformas como Wordpress, Joomla, Moodle, etc., el tiempo de procesamiento de las solicitudes a tu página web dependerá del tema y complementos utilizados.

Última actualización