¿Por qué está 'multi_accept' 'desactivado' por defecto en Nginx?

17

Encontré que 'multi_accept' está 'apagado' por defecto en Nginx de la siguiente manera:

multi_accept

Max Zueff
fuente

Respuestas:

13

Probablemente porque con activado, todos los procesos de trabajo están activos e intentan manejar todas las solicitudes entrantes simultáneamente. Cuando está deshabilitado, Nginx decide qué proceso secundario trata la solicitud uno por uno. Como Nginx es muy eficiente en esto, esto probablemente sirva bien a la mayoría de las personas. Algunos consideran que es un riesgo habilitarlo, ya que puede inundar las conexiones de los trabajadores con solicitudes. Es probable que la configuración de TCP en el sistema operativo también desempeñe un papel en esto.

JayMcTee
fuente
3
Tuve la situación exacta. Traté de averiguar qué hacen los comandos automáticos trabajador_limitado_nombre, trabajador_conexiones y trabajador_procesos. Nginx es un proxy inverso para una aplicación que acepta websockets. La configuración de Nginx permite 50 conexiones para cada trabajador. Cuando tengo dos trabajadores (por lo tanto, se deben establecer 100 conexiones) y multi_accept está activado, aparece el error de que no se pueden crear los websockets (el trabajador que ya tiene 50 conexiones lo intenta ...). Cuando multi_accept está desactivado, todo funciona perfectamente.
Hamburml