Limit czasu połączenia nginx i problem z zamkniętym połączeniem klienta

21

Mam ten serwer Nginx działający na AWS i działał dobrze do niedawna, kiedy kilku użytkowników zaczęło narzekać na to, że strona się nie otwiera, dopóki nie podjęli około 10 prób uzyskania do niej dostępu.

Nigdy nie byłem w stanie rozwiązać problemu z mojej strony. Korzystam z dns Google'a, tj. 8.8.8.8, a kiedy zmieniłem to samo dla jednego z użytkowników, strona działała dobrze. To może być powód lub może to być tylko zbieg okoliczności.

Znalazłem to w dzienniku błędów -

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

A niektóre miejsca nawet to -

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

Uwaga - Umieściłem xx.xxx.xxx.xx dla adresu IP clien't

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

Naprawdę doceniłbym każdą pomoc.

Dzięki

Nitish Dhar
źródło
1
Może to być problem z połączeniem programistów z serwerem, a nie z serwerem. Ponieważ nie można odtworzyć problemu, a sam serwer rejestruje limit czasu połączenia z klientem, musimy podejrzewać, że programista może znajdować się za zaporą ogniową, a przyczyną tego są wewnętrzne problemy z siecią.
Andrew S,
Możesz spróbować wyłączyć Keep-Alive tylko jako test tego problemu. Nie jestem pewien, czy ruch dociera do twojego serwera, ale Keep-Alive może powodować, że osiągniesz limit współbieżności w konfiguracji nginx. Oto więcej informacji: nginx.com/blog/http-keepalives-and-web-performance
Alfonso
1
@NitishDhar Czy udało Ci się rozwiązać ten problem? Mam również ten sam problem i po prostu nieświadomy. Będzie mi miło, jeśli będziesz mógł udostępnić rozwiązanie.
Ethan Collins,
2
Pytania: czy serwer stoi za modułem równoważenia obciążenia lub zaporą? Czy dotyczy NAT? Czy istnieje jakiś tunel między serwerem a Internetem? Pytam dlatego, że brzmi to jak coś, co dzieje się, gdy na ścieżce znajduje się tunel i ktoś zablokował cały ICMP, który przerywa wykrywanie ścieżki MTU.
GeorgeB
Jaka jest wydajność cat / proc / sys / net / ipv4 / tcp_mtu_probing
GeorgeB

Odpowiedzi:

6

Na podstawie dziennika dostarczonego przez Nginx wydaje się, że połączenia między twoim serwerem a użytkownikami są niestabilne lub wolne. Spróbuj traceroutepodać adres IP klienta lub jego bramę z serwera. Ponadto pingtwój adres IP klienta przez długi czas, aby zobaczyć współczynnik utraty pakietów i czas odpowiedzi. MTU może być kolejnym źródłem tego problemu. Sprawdź, czy możesz skontaktować się z klientem za pomocą MTU = 1500 (Mac:) ping -D -s 1472 xx.xx.xx.xx.

BTW: Jeśli twój serwer lub klient mieszka w Chinach, ten problem zwykle nie jest twoją winą. Wiadomo, że GFW losowo odrzuca pakiety między granicami, aby celowo pogorszyć jakość połączenia międzynarodowego.

Lingfeng Xiong
źródło
fyi, GFW = Wielka zapora ogniowa Chin.
Roshan
0

Jak spekulowano w tym komentarzu, prawdopodobnie jest to błąd użytkownika i zamykają połączenie (celowo lub nie). Spróbuj rzetelnie odtworzyć problem. Wyklucz to, że dzieje się to gdzie indziej, a jeśli to tylko ta lokalizacja, będą musieli rozwiązać problemy na swoim końcu. Spróbuj z różnych przeglądarek / komputerów, a następnie przetestuj niezawodność sieci.

Piotr
źródło
0

Te wpisy dziennika wyglądają podobnie do wpisów wyświetlanych, gdy skanuję serwer przy użyciu narzędzi takich jak OpenVAS. Narzędzia te tworzą złe połączenia, działają wolno lub w inny sposób źle działają; nginx właśnie zgłasza, że ​​pewne połączenie nie grało dobrze. Jeśli cały ruch pochodzi z tego samego źródła i jest szybki i nie ma innych prawidłowych żądań do dopasowania w dzienniku dostępu, prawdopodobnie jest to coś w rodzaju skanera botów.

Te skanery mogą również obciążać twoją aplikację, co może spowolnić inny legalny ruch.

edoceo
źródło