Nginx alto upstream_connect_time

Nginx alto upstream_connect_time

Tengo una configuración en Docker con Nginx como proxy inverso para los servicios Tomcat. En cargas pesadas (pruebas), obtengo picos en el tiempo de respuesta.

Resulta que una instancia del servicio Tomcat sin Nginx funciona mejor que varios servicios con Nginx delante, por lo que el problema está entre Nginx y Tomcats. Tras una inspección más detallada, identifiqué que Nginx upstream_connect_time sube a 3 segundos, a veces incluso a 7 segundos.

Intenté jugar con keepalive, keepalive_connections, proxy_connect_timeout, trabajador_procesos y trabajador_conexiones en Nginx pero nada ayuda. Lo siguiente en mi lista es probar valores más altos para Tomcat max_connections.

¿Cuál podría ser el motivo del alto upstream_connect_time?

Respuesta1

Resolví este agregando

proxy_http_version 1.1; 
proxy_set_header Connection ""; 

Sin estos, keepalive no significa nada, por lo que mi ajuste del parámetro keepalive no tuvo efectos.

Si entiendo correctamente, http 1.1 permite usar la misma conexión para respuestas y solicitudes simultáneas y agregar Conexión "" en el encabezado se usa para mantener la conexión abierta.

En términos simples, anteriormente le estaba diciendo a Nginx que está permitido usar keepalives en sentido ascendente, pero no lo configuré para saber cómo mantener la conexión abierta (ahí viene el http 1.1 y la parte de Conexión del encabezado), por lo que no se usaron keepalives. .

Al final, con esos dos parámetros configurados correctamente, keepalive 500 fue suficiente para actuaciones "normales", pero keepalive 1000 se mantuvo para tener en cuenta las situaciones de mucho tráfico.

información relacionada