Erros
- Erros
Upstream timed out (110: Connection timed out) while reading response header from upstream
-
O erro "upstream timed out (110: Connection timed out) while reading response header from upstream" é uma mensagem de erro gerada pelo NGINX, um popular servidor web reverso e balanceador de carga. Este erro ocorre quando o NGINX, atuando como um proxy para um servidor de aplicação ou um serviço upstream, não recebe uma resposta do servidor upstream dentro de um tempo especificado, conhecido como "timeout".
-
Upstream: No contexto do NGINX, "upstream" refere-se ao servidor ou serviço para o qual o NGINX está encaminhando as requisições. Pode ser um servidor de aplicação, como um aplicativo Node.js, Python, Ruby, etc., ou outro serviço que processa as requisições HTTP.
-
Causas Comuns:
- Desempenho do Servidor Upstream: Se o servidor de aplicação estiver sobrecarregado ou enfrentando problemas de desempenho, pode não conseguir responder a tempo.
- Configuração de Timeout: O valor de timeout configurado no NGINX pode ser muito baixo para a resposta esperada do servidor upstream, especialmente se for uma operação que naturalmente leva mais tempo (como uma consulta de banco de dados pesada ou uma operação de I/O).
- Problemas de Rede: Problemas de conectividade entre o NGINX e o servidor upstream também podem resultar nesse erro.
-
Soluções:
- Ajustar Configurações de Timeout: Aumentar o valor de proxy_read_timeout no NGINX pode ajudar a evitar esses erros, dando mais tempo para o servidor upstream responder.
- Otimizar o Servidor Upstream: Melhorar o desempenho do servidor de aplicação, otimizando o código da aplicação ou aumentando os recursos do servidor, pode resolver o problema na fonte.
- Verificar a Conectividade de Rede: Garantir que não há problemas de rede entre o NGINX e o servidor upstream é crucial para a comunicação eficiente.
location / {
proxy_pass http://upstream_server;
proxy_read_timeout 300; # Aumenta o timeout para 300 segundos
}
-
-
Erro 110 ou 104 pode ser causado também por sobrecarga do CPU
- Ex: Estavamos recebendo um ataque em uma rota com método diferente e isso estava causando muitos logs e o CPU estava sobrecarregado por conta disso
"recv() failed (104: Connection reset by peer)"
- Pode ser problemas de conexão entre a aplicação e o NGINX. Bloqueio de ip's supostamente causam esse problema
Foi realizada uma POC e constatou que o motivo é de sobrecarga de CPU e memória
Link para a POC: https://github.com/adolfosp/POC-Nginx