Comparativa independiente · sin rankings de pago
Inicio / Blog / Guía / PHP-FPM: ajusta los trabajadores sin convertir el servidor en una apuesta

PHP-FPM: ajusta los trabajadores sin convertir el servidor en una apuesta

Hay muy pocos trabajadores PHP-FPM y solicitudes en espera; demasiado y la RAM colapsa. Aquí se explica cómo calcular pm.max_children a partir de la memoria real, no de una regla mágica.

Redacción Hébergeurs.eu 5 min Actualizado 17 abr. 2026

Un sitio de comercio electrónico falla todos los lunes por la mañana. El equipo configura el plan VPS. El lunes siguiente, mismo síntoma: páginas blancas, Nginx devuelve 502 Bad Gateway. El verdadero problema no era la CPU: era PHP-FPM el que había agotado sus trabajadores y su RAM al mismo tiempo. Configuración de saldos de FPM capacidad de respuesta y techo de memoria. Mal calibrado, el servidor se convierte en una apuesta: o los visitantes esperan o el kernel mata los procesos.

PHP-FPM gestiona un conjunto de procesos PHP. Cada solicitud dinámica consume un trabajador. Si los 20 trabajadores están ocupados, la solicitud número 21 espera en una cola: el TTFB explota. Si ejecuta 200 con 4 GB de RAM, el asesino de OOM se activa.

Lea el estado actual antes de tocar cualquier cosa

En primer lugar pm.max_children = 50 copiado de un foro:


# Procesos FPM y RAM (grupo de ejemplo www)

ps --no-headers -o rss,cmd -C php-fpm8.2 | awk '{suma+=$1} FIN {imprimir suma/1024 "MB total"}'

Localice también:

  • listen.queue en php-fpm status — solicitudes pendientes.
  • 502/504 correlacionado con picos en los registros de Nginx.
  • slowlog: scripts que retienen a los trabajadores durante mucho tiempo.
SeñalInterpretación
Cola > 0 regularNo hay suficientes trabajadores o scripts demasiado lentos
Intercambio de RAM utilizadoDemasiados trabajadores o pérdida de memoria PHP
Trabajadores inactivos = máximo permanentementePiscina de tamaño insuficiente
Trabajadores inactivos = 0, RAM OKScripts lentos, no grupos demasiado pequeños

Calcular pm.max_children sin fórmula mágica

La fórmula básica:

max_children ≈ (RAM asignada al grupo PHP) / (RAM promedio por trabajador bajo carga)

Mida la RAM por trabajador con tráfico realista (no una página de inicio vacía). WordPress pesado suele ejecutar entre 60 y 120 MB por proceso. Laravel o Magento van más arriba.

En un VPS de 8 GB donde PHP puede usar 4 GB:

  • Trabajador medio: 100 MB → máximo teórico 40.
  • Mantenga un margen de 20–30 % para OS, MySQL, Redis → apunte a 28–32, no 40.

Los modos pm:

ModaComportamientoCasos de uso
dinámicoGenerar entre mínimo y máximo dependiendo de la cargaSitios variables, buen compromiso
estáticoMaximizar siempre los trabajadores activosCarga estable, latencia mínima
bajo demandaCreado bajo demanda, tiempo de espera de inactividadRAM muy limitada, acepta arranque en frío

slowlog, request_terminate_timeout y errores comunes

request_slowlog_timeout (ej. 5 s) + slowlog = lista de scripts que monopolizan a los trabajadores. Corrija el código antes de agregar procesos.

request_terminate_timeout corta un script infinito: útil, pero puede truncar importaciones legítimas si no se configura correctamente.

Errores clásicos:

  1. Copiar un grupo de producción en un grupo compartido: límites diferentes, cuenta suspendida.
  2. Ignorar MySQL: 50 trabajadores × consultas lentas = 50 conexiones de base de datos saturadas.
  3. OPcache deshabilitado o de tamaño incorrecto: cada trabajador recarga el código de bytes, la RAM está inflada (consulte OPcache).
  4. high max_children + sin caché de página: WordPress recalcula todo en cada visita.

La cima: más trabajadores esconde una aplicación lenta

Este es el punto que eluden las ofertas “ilimitadas”: ilimitado en el lado del visitante no significa ilimitado en el lado del proceso PHP.

Decide y avanza sin puntos ciegos

  1. Mida RAM/trabajador y longitud de la cola bajo carga real.
  2. Calcular max_children con margen; Elija dinámico o estático.
  3. Habilite el registro lento, corrija los scripts enumerados.
  4. Volver a probar carga y TTFB; Sólo compare el alojamiento si la piscina es saludable.

Para obtener un diagnóstico previo, lea TTFB alto. Para filtrar un VPS con acceso completo al pool, navegue por el directorio o la comparación.

Preguntas frecuentes

¿Cómo calcular pm.max_children?

RAM disponible para PHP dividida por el consumo medio de un trabajador bajo carga, con un margen del 20-30%.

dinámico, bajo demanda o estático: ¿cuál elegir?

dinámico para tráfico variable; estática para carga estable; ondemand si la RAM es muy limitada y está de acuerdo con la latencia de arranque.

¿Qué hacer cuando el registro lento llena el disco?

Umbral realista, corrección de script, no solo rotación de registros.

¿Puede el host bloquear mis cambios de FPM?

Sí, compartido; en VPS usted controla el grupo: verifique los límites contractuales.


Antes de aumentar los trabajadores, pregunte: ¿cuántos MB por solicitud y cuántos segundos por secuencia de comandos? Si no lo sabe, el ajuste de FPM es una lotería, no una explotación.

Compara proveedores europeos

Filtra por cumplimiento, ubicación y caso de uso — luego abre las fichas para verificar el alcance real.

Explorar el directorio
Blog

Lecturas relacionadas

Todos los artículos →