Por qué el número total de subprocesos de Apache2 es mayor que MaxRequestWorkers

Por qué el número total de subprocesos de Apache2 es mayor que MaxRequestWorkers

Recientemente moví mi mpm de perfork a event (y también mod_php (php7.0) a php-fpm (proxy_fgi)). Estimé que mi carga máxima de conexión simultánea era de alrededor de 300. Entonces configuré la siguiente configuración en mpm_event.conf

StartServers                     5
MinSpareThreads          25
MaxSpareThreads          75
ThreadLimit                      64
ThreadsPerChild          35
MaxRequestWorkers         350
MaxConnectionsPerChild   0

Ahora veo un comportamiento extraño cuando observo el proceso de Apache2 y el número total de subprocesos usando ps

Normalmente tengo entre 12 y 13 procesos apache2 en total ( ps aux | grep apache2 | wc -l). Considerando que uno es padre... entonces son entre 10 y 11 niños. Además, si veo el recuento total de subprocesos de apache2 con

ps -o nlwp $(pidof apache2) | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'

Observo 408 hilos durante mucho tiempo. Entonces mis preguntas son:

  • ¿Cómo es posible que el número total de subprocesos aumente más allá de MaxRequestWorkers (350)?
  • ¿Cómo es posible que el número total de procesos secundarios aumente más allá de StartServers (5)?
  • ¿Cuál es la justificación del 408? (¿12*34?) ¿Mi tráfico está alcanzando un límite?

Gracias por tu ayuda de antemano

Respuesta1

Estoy observando un comportamiento similar. Con MaxRequestWorkers 150 predeterminado, llego a hasta 301 subprocesos, es decir, 1 subproceso principal y 2* MaxRequestWorkers.

Probé esto estableciendo MaxRequestWorkers en 40 y llegué a 81.

¿Alguien puede confirmar este comportamiento de Apache?

PD: Estoy ejecutando Apache2 como prefork, es decir, ThreadLimit y ThreadsPerChild no se usan en mi humilde opinión.

información relacionada