Jedną z rzeczy, które powinieneś zrobić, aby rozpocząć, jest naprawienie net.ipv4.tcp_fin_timeout=1
. To jest droga do niskiego, prawdopodobnie nie powinieneś brać dużo mniej niż 30.
Ponieważ jest to za nginx. Czy to oznacza, że nginx działa jako odwrotny serwer proxy? W takim przypadku Twoje połączenia są 2x (jeden do klienta, jeden do serwerów internetowych). Czy wiesz, do którego końca należą te gniazda?
Aktualizacja:
fin_timeout określa, jak długo pozostają w FIN-WAIT-2 (From networking/ip-sysctl.txt
w dokumentacji jądra):
tcp_fin_timeout - INTEGER
Time to hold socket in state FIN-WAIT-2, if it was closed
by our side. Peer can be broken and never close its side,
or even died unexpectedly. Default value is 60sec.
Usual value used in 2.2 was 180 seconds, you may restore
it, but remember that if your machine is even underloaded WEB server,
you risk to overflow memory with kilotons of dead sockets,
FIN-WAIT-2 sockets are less dangerous than FIN-WAIT-1,
because they eat maximum 1.5K of memory, but they tend
to live longer. Cf. tcp_max_orphans.
Myślę, że może po prostu musisz pozwolić Linuksowi trzymać numer gniazda TIME_WAIT w porównaniu z czymś, co może wyglądać na 32-krotne ograniczenie na nich, i właśnie tutaj Linux je przetwarza. Do tego 32k nawiązano w tym linku :
Ponadto uważam, że / proc / sys / net / ipv4 / tcp_max_tw_buckets jest mylący. Chociaż domyślną wartością jest 180000, widzę zakłócenie TCP, gdy mam 32K gniazd TIME_WAIT w moim systemie, bez względu na maks. Tw wiadra.
Ten link sugeruje również, że stan TIME_WAIT wynosi 60 sekund i nie można go dostroić za pomocą proc.
Losowy fajny fakt:
możesz zobaczyć liczniki czasu na netstat dla każdego gniazda znetstat -on | grep TIME_WAIT | less
Ponowne użycie Vs Recycle:
Są to dość interesujące, brzmi to jak ponowne użycie umożliwia ponowne użycie gniazd time_Wait, a recykling przełącza je w tryb TURBO:
tcp_tw_recycle - BOOLEAN
Enable fast recycling TIME-WAIT sockets. Default value is 0.
It should not be changed without advice/request of technical
experts.
tcp_tw_reuse - BOOLEAN
Allow to reuse TIME-WAIT sockets for new connections when it is
safe from protocol viewpoint. Default value is 0.
It should not be changed without advice/request of technical
experts.
Nie polecałbym używania net.ipv4.tcp_tw_recycle, ponieważ powoduje to problemy z klientami NAT .
Może możesz spróbować nie włączyć obu tych urządzeń i zobaczyć, jaki to ma wpływ (Spróbuj pojedynczo i zobacz, jak działają one same)? Chciałbym skorzystać z netstat -n | grep TIME_WAIT | wc -l
szybszego niż Munin zwrotnej.