No momento, estou recebendo uma inundação HTTP bastante grande no momento e está fazendo com que meu proxy reverso nginx produza um 502 Bad Gateway.
Eu tenho um servidor front-end executando o nginx como um proxy para o meu servidor back-end, mas está recebendo apenas alguns connect() failed (110: Connection timed out) while connecting to upstream
erros. Toneladas deles. Se eu ignorar o servidor proxy para conectar-me ao back-end, posso executar o site muito bem, então sei que ele está no proxy reverso em algum lugar. No entanto, não tenho idéia de como determinar por que está chegando ao tempo limite.
Qualquer ajuda?
executando o nginx 1.2.3 no CentOS 6.2
nginx
reverse-proxy
Roubar
fonte
fonte
Respostas:
Suponho que você já tenha aumentado o nível de log de erro do Nginx para depuração. Caso contrário, comece por aí.
Sua melhor aposta provavelmente será usada
strace
para visualizar as chamadas do sistema feitas pelo Nginx. Em particular, você deve prestar atenção àsconnect()
chamadas e ficar de olho nos códigos de retorno (man 2 connect
pode ser seu amigo aqui).Depois de obter essas informações, é possível adivinhar melhor se o problema está confinado ao seu proxy de front-end ou se tem algo a ver com as interações entre o proxy e o servidor de aplicativos de back-end.
fonte
Não fica muito mais pedante do que isso, a menos que você queira colocar sondas dtrace:
Defina o nível do log de depuração: /etc/nginx/nginx.conf:
Configure o tcpdump em outra janela:
Monitore os arquivos de log em outra janela:
Inicialize o nginx interativamente com o strace:
E depois
Depuração adicional pode ser realizada com um nginx compilado com
--with-debug
. Verifique executando:Outro bom módulo não compilado por padrão é: HttpStubStatusModule . Com toda a probabilidade, qualquer configuração decente exigirá um nginx compilado de forma personalizada (embalagem altamente recomendável usando as ferramentas de embalagem da distro).
A maioria deles não é adequada para uso em produção; veja compilar o nginx com o gperf, se você precisar de mais estatísticas.
fonte
Parece que você está depurando um site de alto tráfego.
Use
debug
com adebug_connection
diretiva para que o log de erros do nginx mostre logs de depuração apenas do seu IP.Depois de começar a ver alguns logs de erros úteis, em vez de ativar a opção de depuração para toda a configuração do nginx, adicione uma
error_log /path/to/some/file/ debug;
diretiva separada nolocation {..}
bloco responsável pela conexão reverse_proxy.Dessa forma, você poderá isolar o log de erros de depuração apenas do seu IP.
Tente relacioná-lo com a solicitação que você está fazendo (no seu navegador).
Por exemplo, verifique: https://easyengine.io/tutorials/nginx/debugging/
Um nível adiante, você pode usar o HttpEchoModule do Nginx
fonte
Nunca achei o Nginx um gargalo, na maioria dos casos é mais do que capaz do que o back-end. Mas se você testou sem o Nginx e não encontrou nenhum erro, será (ou ambos):
Sem ver suas configurações do Nginx, ninguém pode comentar sobre o primeiro. E sem saídas adequadas do sistema operacional, ninguém pode comentar sobre o último.
fonte