Nginx alto upstream_connect_time

Nginx alto upstream_connect_time

Eu tenho uma configuração no Docker com o Nginx sendo o proxy reverso para os serviços Tomcat. Em carga pesada (teste), estou recebendo picos no tempo de resposta.

Acontece que uma instância do serviço Tomcat sem Nginx está funcionando melhor do que vários serviços com Nginx na frente deles, então o problema está entre Nginx e Tomcats. Após uma inspeção mais aprofundada, identifiquei que o upstream_connect_time do Nginx vai até 3s, às vezes até 7s.

Tentei brincar com keepalive, keepalive_connections, proxy_connect_timeout, trabalhador_processes e trabalhador_connections no Nginx, mas nada ajuda. O próximo item da minha lista é tentar valores mais altos para max_connections do Tomcat.

Qual poderia ser o motivo do alto upstream_connect_time?

Responder1

Eu resolvi este adicionando

proxy_http_version 1.1; 
proxy_set_header Connection ""; 

Sem eles, keepalive não significa nada, então minha configuração do parâmetro keepalive não teve efeito.

Se bem entendi, o http 1.1 permite usar a mesma conexão para respostas e solicitações simultâneas e adicionar Conexão "" no cabeçalho é usado para manter a conexão aberta.

Em termos leigos, anteriormente eu estava dizendo ao Nginx que é permitido usar keepalives upstream, mas não o configurei para saber como manter a conexão aberta (lá vem o http 1.1 e a parte de conexão do cabeçalho), então nenhum keepalives foi usado .

No final, com esses dois parâmetros definidos corretamente, o keepalive 500 foi suficiente para desempenhos "normais", mas o keepalive 1000 foi mantido para dar conta das situações de alto tráfego.

informação relacionada