Tiempo de espera de conexión nginx y problema de conexión cerrada del cliente

21

Tengo este servidor nginx ejecutándose en AWS y funcionaba bien hasta hace poco, cuando algunos usuarios comenzaron a quejarse de que el sitio web no se abría hasta que hicieron unos 10 intentos para acceder a él.

Nunca pude reprochar el problema desde mi lado. Estoy usando el dns de google, es decir 8.8.8.8 y cuando cambié lo mismo para uno de los usuarios, el sitio funcionaba bien. Ahora, esta puede ser la razón o también puede ser solo una coincidencia.

Encontré esto en el registro de errores:

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

Y algunos lugares incluso esto ...

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: he colocado xx.xxx.xxx.xx para la IP del cliente

Aquí está la configuración de 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 ...
}

Realmente apreciaria cualquier ayuda.

Gracias

Nitish Dhar
fuente
1
Esto podría ser un problema con la conexión de los desarrolladores al servidor, no al servidor. Como no puede volver a crear el problema y el servidor mismo está registrando un tiempo de espera de conexión de cliente, debemos sospechar que el desarrollador puede estar detrás de un firewall y que tiene problemas internos de red que lo causan.
Andrew S
Puede intentar deshabilitar Keep-Alive solo como prueba para este problema. No estoy seguro de que el tráfico llegue a su servidor web, pero Keep-Alive podría estar causando que llegue al límite de concurrencia en su configuración nginx. Aquí hay más información: nginx.com/blog/http-keepalives-and-web-performance
Alfonso
1
@NitishDhar ¿Pudiste resolver este problema? También me enfrento al mismo problema y simplemente no tengo idea. Se alegrará si puede compartir la solución.
Ethan Collins
2
Preguntas: ¿está el servidor detrás de un equilibrador de carga o un firewall? ¿NAT está involucrado? ¿Hay algún tipo de túnel entre el servidor e Internet? La razón por la que pregunto es que esto suena como el tipo de cosas que suceden cuando hay un túnel en algún lugar en el camino y alguien ha bloqueado todo ICMP que interrumpe el descubrimiento de Path MTU.
GeorgeB
Además, ¿cuál es el resultado de cat / proc / sys / net / ipv4 / tcp_mtu_probing
GeorgeB

Respuestas:

6

Según el registro que proporcionó de Nginx, parece que las conexiones entre su servidor y los usuarios son inestables o lentas. Intente traceroutecon la dirección IP de su cliente o su puerta de enlace desde su servidor. Además, pingla dirección IP de su cliente durante mucho tiempo para ver la tasa de pérdida de paquetes y el tiempo de respuesta. MTU puede ser otra fuente de este problema. Pruebe si puede comunicarse con su cliente con MTU = 1500 (Mac:) ping -D -s 1472 xx.xx.xx.xx.

Por cierto: si su servidor o cliente reside en China, este problema generalmente no es su culpa. Se sabe que GFW descarta al azar paquetes entre fronteras para empeorar intencionalmente la calidad de la conexión internacional.

Lingfeng Xiong
fuente
FYI, GFW = Gran Cortafuegos de China.
Roshan
0

Como se especuló en ese comentario, es probable que sea un error del usuario y están cerrando la conexión (ya sea intencionalmente o no). Intenta reproducir de manera confiable el problema. Descarte que suceda en otro lugar y si es solo esa ubicación, deberán resolver los problemas por su parte. Pruebe desde diferentes navegadores / computadoras y luego pruebe la confiabilidad de la red.

Peter
fuente
0

Estas entradas de registro son similares a las entradas que aparecen cuando uso herramientas como OpenVAS para escanear un servidor. Estas herramientas hacen malas conexiones, se vuelven lentas o funcionan mal; nginx solo informa que alguna conexión no estaba funcionando bien. Si todo el tráfico proviene de la misma fuente, y es rápido y no tiene otras solicitudes legítimas que coincidan en el registro de acceso, es probable que solo sea un tipo de escáner de bots.

Estos escáneres también podrían estar poniendo su aplicación bajo carga, lo que podría hacer que sea lento para otro tráfico legítimo.

edoceo
fuente