tempo limite de conexão nginx e problema de conexão fechada do cliente

21

Eu tenho esse servidor nginx em execução na AWS e estava funcionando bem até recentemente, quando alguns usuários começaram a reclamar que o site não estava sendo aberto até que fizessem 10 tentativas de acesso.

Eu nunca fui capaz de reproduzir o problema do meu lado. Estou usando o DNS do google, ou seja, 8.8.8.8 e quando mudei o mesmo para um dos usuários, o site estava funcionando bem. Agora, essa pode ser a razão ou também pode ser apenas uma coincidência.

Encontrei isso no log de erros -

2014/05/29 13:46:15 [info] 6940#0: *150649 client timed out (110: Connection timed out) while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150670 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150653 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150652 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80

E alguns lugares até isso -

2014/05/29 13:46:53 [info] 6940#0: *150665 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:53 [info] 6940#0: *150660 client xx.xxx.xxx.xx closed keepalive connection

Nota- Colocou xx.xxx.xxx.xx para o IP do cliente

Aqui está a configuração do nginx -

server {
    listen       80;
    server_name  somedomain.com  www.somedomain.com;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    root        /var/www/somedomain/current/app/webroot;
    index       index.php index.html index.htm;

    ... couple of location rules ...
}

Eu realmente apreciaria qualquer ajuda.

obrigado

Nitish Dhar
fonte
11
Isso pode ser um problema com a conexão dos desenvolvedores com o servidor, não com o servidor. Como você não pode recriar o problema e o próprio servidor está registrando um tempo limite de conexão do cliente, precisamos suspeitar que o desenvolvedor esteja protegido por um firewall e que eles tenham problemas de rede internos que o causem.
Andrew S
Você pode tentar desativar o Keep-Alive apenas como um teste para esse problema. Não tenho certeza se o tráfego está atingindo seu servidor da Web, mas o Keep-Alive pode estar fazendo com que você atinja o limite de simultaneidade na sua configuração do nginx. Aqui está mais informações: nginx.com/blog/http-keepalives-and-web-performance
Alfonso
11
@NitishDhar Você conseguiu resolver este problema? Também estou enfrentando o mesmo problema e sem noção. Ficará feliz se você pode compartilhar a solução.
Ethan Collins
2
Perguntas: o servidor está protegido por um balanceador de carga ou um firewall? O NAT está envolvido? Existe um túnel de qualquer tipo entre o servidor e a Internet? A razão pela qual pergunto é que isso parece o tipo de coisa que acontece quando há um túnel em algum lugar do caminho e alguém bloqueou todo o ICMP que interrompe a descoberta do Path MTU.
GeorgeB
Além disso, qual é a saída do cat / proc / sys / net / ipv4 / tcp_mtu_probing
GeorgeB

Respostas:

6

Com base no log que você forneceu do Nginx, parece que as conexões entre o servidor e os usuários são instáveis ​​ou lentas. Por favor, tente tracerouteo endereço IP do seu cliente ou o gateway dele / dela no seu servidor. Além disso, pingo endereço IP do cliente por um longo tempo para ver a taxa de perda de pacotes e o tempo de resposta. MTU pode ser outra fonte desse problema. Teste se você pode alcançar seu cliente com MTU = 1500 (Mac:) ping -D -s 1472 xx.xx.xx.xx.

BTW: Se o seu servidor ou cliente reside na China, esse problema geralmente não é sua culpa. Sabe-se que o GFW descarta pacotes aleatoriamente entre fronteiras para intencionalmente piorar a qualidade da conexão internacional.

Lingfeng Xiong
fonte
fyi, GFW = Grande firewall da China.
Roshan
0

Conforme especulado nesse comentário, é provável que seja um erro do usuário e eles estão fechando a conexão (intencionalmente ou não). Tente reproduzir o problema de maneira confiável. Descartar que isso aconteça em outro lugar e, se for apenas esse local, eles precisarão solucionar problemas. Tente em diferentes navegadores / computadores e teste a confiabilidade da rede.

Pedro
fonte
0

Essas entradas de log são semelhantes às entradas que aparecem quando eu uso ferramentas como o OpenVAS para verificar um servidor. Essas ferramentas fazem conexões ruins, ficam lentas ou operam mal; O nginx está apenas relatando que alguma conexão não estava funcionando bem. Se todo o tráfego é da mesma fonte e é rápido e não tem outras solicitações legítimas para corresponder no log de acesso, é provável que seja apenas um tipo de bot-scanner.

Esses scanners também podem sobrecarregar seu aplicativo, o que pode torná-lo lento para outro tráfego legítimo.

edoceo
fonte