cantidad de procesos de trabajo nginx

23

Estoy configurando nginx para servir una instalación de Drupal, y parece que encuentro información contradictoria sobre la configuración de los procesos de trabajo de nginx. Un sitio dice que necesita dos, uno dice que necesita cinco, uno dice uno por procesador ...

¿Cómo debo elegir la cantidad de procesos de trabajo de nginx? Si hace la diferencia, es una VM invitada en un clúster VMWare, y le he dado un procesador virtual.

ceejayoz
fuente

Respuestas:

16

Nginx a diferencia de Apache y otros procesos por servidores web de conexión. Utiliza un proceso maestro para iniciar y monitorear un pequeño número de procesos de trabajo que realmente manejan las conexiones. Mi recomendación es comenzar con el número predeterminado de trabajadores, que es 1.

worker_processes  1;

Solo necesitará aumentar esto si descubre que el trabajador nginx está pasando demasiado tiempo bloqueado en IO. Esto no pasará hasta que esté atendiendo muchos cientos de solicitudes por segundo.

También puede encontrar estas configuraciones útiles.

worker_rlimit_nofile 8192;

events {
    worker_connections  2048;
    use epoll;
}
Dave Cheney
fuente
1
¿Puedes describir para qué se utiliza "worker_rlimit_nofile 8192"?
The Pixel Developer
wiki.nginx.org/NginxHttpMainModule#worker_rlimit_nofile . Esto le indica al trabajador que aumente su límite.
Dave Cheney
15

En los sistemas SMP, se deben iniciar al menos los procesos de trabajo de nCPU: en cuatro núcleos, cuatro, etc. Eso es suficiente para el proxy.

Si va a servir algunos sitios con mucho contenido estático, sería mejor agregar más trabajadores, uno por disco.

Si su subsistema de disco es deficiente o carga demasiado alta, los procesos de trabajo de nginx pueden bloquearse en las operaciones de E / S y no podrían atender otras solicitudes. En este caso, debe aumentar el número de procesos de trabajo a un valor adecuado (puede ser decenas) o agregar algo de memoria para el caché de disco.

Observe la impresión "ps ax": los trabajadores que están en estado "D" están bloqueados. Aumente hasta obtener al menos procesos de trabajo de nCPU no bloqueados.

Vadim
fuente