Zeitüberschreitung der Nginx-Verbindung und Problem mit geschlossener Clientverbindung

21

Ich habe diesen Nginx-Server unter AWS und er funktionierte bis vor kurzem einwandfrei, als sich einige Benutzer beschwerten, dass die Website erst nach 10 Zugriffsversuchen geöffnet wird.

Ich war nie in der Lage, das Problem von meiner Seite zu rügen. Ich benutze Google DNS, dh 8.8.8.8 & als ich das gleiche für einen der Benutzer änderte, funktionierte die Site gut. Dies kann nun der Grund sein oder auch nur ein Zufall.

Ich habe das im Fehlerprotokoll gefunden -

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

Und an einigen Orten sogar das -

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

Hinweis: Haben Sie xx.xxx.xxx.xx für die Client-IP platziert

Hier ist die Nginx-Konfiguration -

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 ...
}

Ich würde mich über jede Hilfe sehr freuen.

Vielen Dank

Nitish Dhar
quelle
1
Dies könnte ein Problem mit der Verbindung der Entwickler zum Server sein, nicht mit dem Server. Da Sie das Problem nicht erneut erstellen können und der Server selbst ein Zeitlimit für die Clientverbindung registriert, muss vermutet werden, dass sich der Entwickler möglicherweise hinter einer Firewall befindet und interne Netzwerkprobleme vorliegen, die dies verursachen.
Andrew S
Sie können versuchen, Keep-Alive nur als Test für dieses Problem zu deaktivieren. Ich bin mir nicht sicher, ob der Datenverkehr auf Ihren Webserver trifft, aber Keep-Alive könnte dazu führen, dass Sie das Parallelitätslimit in Ihrer Nginx-Konfiguration erreichen. Hier finden Sie weitere Informationen: nginx.com/blog/http-keepalives-and-web-performance
Alfonso
1
@ NitishDhar Haben Sie dieses Problem gelöst? Ich stehe auch vor dem gleichen Problem und nur ahnungslos. Würde mich freuen, wenn du die Lösung teilen kannst.
Ethan Collins
2
Fragen: Steht der Server hinter einem Load Balancer oder einer Firewall? Ist NAT beteiligt? Gibt es einen Tunnel zwischen dem Server und dem Internet? Der Grund, den ich frage, ist, dass dies wie das klingt, was passiert, wenn sich irgendwo im Pfad ein Tunnel befindet und jemand alles ICMP blockiert hat, was die Path MTU-Erkennung bricht.
GeorgeB
Was ist auch die Ausgabe von cat / proc / sys / net / ipv4 / tcp_mtu_probing
GeorgeB

Antworten:

6

Basierend auf dem Protokoll, das Sie von Nginx bereitgestellt haben, scheinen die Verbindungen zwischen Ihrem Server und den Benutzern instabil oder langsam zu sein. Bitte versuchen Sie es traceroutemit Ihrer Client-IP-Adresse oder seinem Gateway von Ihrem Server. Außerdem muss pingIhre Client-IP-Adresse lange Zeit die Paketverlustrate und die Antwortzeit anzeigen. Die MTU könnte eine weitere Ursache für dieses Problem sein. Testen Sie, ob Sie Ihren Kunden mit MTU = 1500 (Mac:) erreichen können ping -D -s 1472 xx.xx.xx.xx.

Übrigens: Wenn sich Ihr Server oder Client in China befindet, ist dieses Problem normalerweise nicht Ihre Schuld. Es ist bekannt, dass GFW willkürlich Pakete zwischen Rändern verwirft, um die internationale Verbindungsqualität absichtlich zu verschlechtern.

Lingfeng Xiong
quelle
Zu Ihrer Information, GFW = Great Firewall of China.
Roshan
0

Wie in diesem Kommentar spekuliert, handelt es sich wahrscheinlich um einen Benutzerfehler, und die Verbindung wird geschlossen (absichtlich oder nicht). Versuchen Sie, das Problem zuverlässig zu reproduzieren. Schließen Sie es aus, wenn es anderswo passiert, und wenn es nur dieser Ort ist, müssen sie an ihrem Ende Fehler beheben. Versuchen Sie es mit verschiedenen Browsern / Computern und testen Sie dann die Netzwerkzuverlässigkeit.

Peter
quelle
0

Diese Protokolleinträge ähneln Einträgen, die angezeigt werden, wenn ich Tools wie OpenVAS zum Scannen eines Servers verwende. Diese Werkzeuge stellen schlechte Verbindungen her, werden langsam oder arbeiten auf andere Weise schlecht. nginx meldet nur, dass eine Verbindung nicht gut funktioniert hat. Wenn der gesamte Datenverkehr aus derselben Quelle stammt, schnell ist und keine anderen legitimen Anforderungen für den Abgleich im Zugriffsprotokoll vorliegen, ist dies wahrscheinlich nur eine Art Bot-Scanner.

Diese Scanner könnten Ihre Anwendung auch unter Last setzen, was sie für anderen legitimen Datenverkehr verlangsamen könnte.

edoceo
quelle