systemadmin.es > LAMP y web > nginx: Valor automático de worker_processes

nginx: Valor automático de worker_processes

El valor de worker_processes, se suele definir al mismo número de CPUs que tenga el equipo, o como mucho, el doble. Esto se hace así porque, al ser un servidor web asíncrono, cada proceso se puede encargar de muchas peticiones y por lo tanto no tiene sentido tener más procesos que CPUs capaces de ejecutar código.

Por lo tanto, se trata de un valor que depende del equipo. Con la siguiente directiva:

worker_processes  4;

Veríamos 4 workers más el proceso padre que esta escuchando en el 80 (y para ello necesita ejecutarse como root)

 4838 ?        S      0:00  |   |   \_ nginx: master process /usr/local/sbin/nginx
 4850 ?        S<    30:34  |   |       \_ nginx: worker process
 4851 ?        S<    31:16  |   |       \_ nginx: worker process
 4852 ?        S<    30:53  |   |       \_ nginx: worker process
 4853 ?        S<    30:46  |   |       \_ nginx: worker process

A partir de la versión 1.2.5 de nginx, podemos definir la directiva con el parámetro "auto" que automáticamente calcula el valor:

worker_processes  auto;

Veremos que levanta los workers que considera necesarios para el equipo:

27908 ?        S      0:00  |   |   \_ nginx: master process /usr/local/sbin/nginx
27909 ?        S<     0:00  |   |       \_ nginx: worker process
27910 ?        S<     0:00  |   |       \_ nginx: worker process
27911 ?        S<     0:00  |   |       \_ nginx: worker process
27912 ?        S<     0:00  |   |       \_ nginx: worker process
27913 ?        S<     0:00  |   |       \_ nginx: worker process
27914 ?        S<     0:00  |   |       \_ nginx: worker process
27915 ?        S<     0:00  |   |       \_ nginx: worker process
27916 ?        S<     0:00  |   |       \_ nginx: worker process
27917 ?        S<     0:00  |   |       \_ nginx: worker process
27918 ?        S<     0:00  |   |       \_ nginx: worker process
27919 ?        S<     0:00  |   |       \_ nginx: worker process
27920 ?        S<     0:00  |   |       \_ nginx: worker process
27921 ?        S<     0:00  |   |       \_ nginx: worker process
27922 ?        S<     0:00  |   |       \_ nginx: worker process
27923 ?        S<     0:00  |   |       \_ nginx: worker process
27924 ?        S<     0:00  |   |       \_ nginx: worker process

Que es el mismo número de workers que de CPUs:

# grep "^process" /proc/cpuinfo  | wc -l
16
# pgrep -u nginx | wc -l
16

Dicho parámetro no varia el número de workers en función de la carga, como podría dar a pensar, sino que esta pensado mas bien para tener plantillas de configuración independientemente del número de CPUs del equipo,

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>