Entendiendo pm.max_children en PHP-FPM: Qué Es y Cómo Configurarlo

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

El valor de pm.max_children no es la suma del resto de los valores en la configuración de PHP-FPM. Es un parámetro independiente que define el número máximo total de procesos de trabajo que pueden existir al mismo tiempo, sin importar el estado (activo o inactivo). Vamos a aclarar cómo interactúan los valores:

Detalle de los parámetros:

  1. pm.max_children:
    • Es el límite máximo de procesos simultáneos que puede tener el pool.
    • Esto incluye tanto procesos que están atendiendo solicitudes como procesos que están inactivos.
    • Si se alcanza este límite, nuevas solicitudes tendrán que esperar hasta que un proceso quede disponible.
  2. pm.start_servers:
    • Es el número de procesos que se crean inicialmente cuando el servicio PHP-FPM arranca.
  3. pm.min_spare_servers y pm.max_spare_servers:
    • Controlan la cantidad de procesos inactivos que PHP-FPM debe mantener.
    • pm.min_spare_servers: Si el número de procesos inactivos cae por debajo de este valor, se crean más procesos.
    • pm.max_spare_servers: Si el número de procesos inactivos excede este valor, se terminan los procesos sobrantes.

Ejemplo:

Con la siguiente configuración:

pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 7
  • pm.max_children = 20: Esto significa que en ningún momento el pool puede tener más de 20 procesos (activos o inactivos).
  • pm.start_servers = 5: Cuando PHP-FPM arranca, comienza con 5 procesos.
  • pm.min_spare_servers = 3: Si hay menos de 3 procesos inactivos, PHP-FPM creará más.
  • pm.max_spare_servers = 7: Si hay más de 7 procesos inactivos, PHP-FPM terminará los procesos sobrantes.

Importante:

  • La suma de pm.start_servers, pm.min_spare_servers y pm.max_spare_servers no define ni limita el valor de pm.max_children.
  • pm.max_children debe ser el valor máximo absoluto que tu servidor puede manejar en función de la memoria disponible.

Si tienes suficiente memoria y deseas aprovecharla mejor, ajusta pm.max_children para permitir más procesos simultáneos, sin preocuparte por que la suma de los otros valores lo iguale.