Nov 282012
 
Artículo Apache

Un servidor Apache que se ejecuta en modo de multiproceso worker, crea un cierto número de procesos hijo para atender las solicitudes entrantes. A su vez, cada uno de los procesos ejecuta varios threads entre los que distribuye la carga. Para optimizar el uso de recursos disponibles, hay que configurar adecuadamente el número de procesos y threads que se ejecutan en el servidor.

Parámetros de configuración de apache mpm worker

Los parámetros de configuración disponibles para este objetivo son:

StartServers – Establece el número de procesos hijo que se lanzan durante la inicialización del servidor. Si el número de solicitudes que se reciben en un momento dado es superior a las que pueden atender los procesos hijo en ejecución, se crean nuevos procesos hijo hasta un máximo especificado en el parámetro ServerLimit.

ServerLimit – Establece el número máximo de procesos hijo que pueden estar en ejecución en un momento dado.

ThreadsPerChild – Cada proceso hijo ejecuta el número de threads indicado por este parámetro.

ThreadLimit – ThreadLimit es el valor máximo permitido para ThreadsPerChild. Este parámetro sólo puede ser modificado parando completamente y volviendo a iniciar el servidor. Por el contrario, ThreadsPerChild puede ser modificado mediante un restart.

MinSpareThreads – Este parámetro establece el mínimo número de threads que deben estar en ejecución, a la espera de recibir solicitudes de cliente.

MaxSpareThreads – Cuando disminuye el volumen de solicitudes entrantes, el servidor finaliza el número de threads en ejecución para que el número de threads que quedan inactivos no supere el límite establecido por este parámetro.

MaxClients – Este parámetro determina el número máximo de solicitudes que pueden estar siendo atendidas simultáneamente, y por lo tanto el número máximo de threads activos.

MaxRequestsPerChild – Este es el número máximo de solicitudes que un proceso hijo puede atender durante su existencia. Cuando se alcanza este límite, el servidor finaliza el proceso hijo y crea uno nuevo si es necesario. Este parámetro puede ser cero para que los procesos hijo continúen ejecutándose indefinidamente, hasta que el servidor sea parado.

Dado que estos parámetros están interrelacionados, existen algunas restricciones en los valores que les pueden ser asignados:

  • ServerLimit tiene que ser mayor o igual a ( MaxClients / ThreadsPerChild )
  • Normalmente, MinSpareThreads y MaxSpareThreads serán múltiplos de ThreadsPerChild, aunque no es obligatorio
  • ThreadsPerChild tiene que ser menor o igual a ThreadLimit

Consejos de configuración

Cada servidor web es distinto, por lo que no hay reglas generales que sean aplicables a todos ellos. Sin embargo, podemos sugerir que el número de procesos establecido por ServerLimit sea similar al número de procesadores de que dispone el servidor. El valor por defecto de ThreadsPerChild en mpm worker es 25. Con un servidor de cuatro procesadores, esto permite atender simultáneamente un total de 100 peticiones. Si la carga del servidor supera este límite, podemos probar distintas combinaciones:

– Incrementar el valor de ThreadsPerChild hasta un máximo de 64, que es valor por defecto de ThreadLimit

– Incrementar el valor de ServerLimit hasta 16, que es el valor por defecto de este parámetro.

Con estos valores, el servidor puede atender un máximo de 16*64=1024 peticiones simultáneas, si los recursos de RAM, CPU y ancho de banda de que dispone lo permiten.

 Publicado por en 8:10 pm

 Deja un comentario

(requerido)

(requerido)