it-swarm-es.com

cantidad de procesos de trabajo nginx

Estoy configurando nginx para servir una instalación 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 el número de procesos de trabajo nginx? Si hace la diferencia, es un invitado VM en un clúster VMWare, y le he dado un procesador virtual.

23
ceejayoz

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;
}
16
Dave Cheney

En los sistemas SMP, al menos los procesos de trabajo de nCPU deben iniciarse: 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.

15
Vadim