Eine Sache, die Sie tun sollten, um zu beginnen, ist, das Problem zu beheben net.ipv4.tcp_fin_timeout=1
. Das ist viel zu niedrig, Sie sollten wahrscheinlich nicht viel niedriger als 30 nehmen.
Da steht das hinter nginx. Bedeutet das, dass Nginx als Reverse Proxy fungiert? In diesem Fall bestehen zwei Verbindungen (eine zum Client und eine zu Ihren Webservern). Wissen Sie, zu welchem Ende diese Steckdosen gehören?
Update:
fin_timeout gibt an, wie lange sie in FIN-WAIT-2 bleiben (Ab networking/ip-sysctl.txt
in der Kerneldokumentation ):
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.
Ich denke, Sie müssen Linux vielleicht nur die TIME_WAIT-Socket-Nummer mit einer Größe von 32 KB vergleichen lassen, und hier recycelt Linux sie. Auf diese 32k wird in diesem Link angespielt :
Außerdem finde ich das / proc / sys / net / ipv4 / tcp_max_tw_buckets verwirrend. Obwohl die Standardeinstellung auf 180000 festgelegt ist, wird eine TCP-Unterbrechung angezeigt, wenn auf meinem System 32K TIME_WAIT-Sockets vorhanden sind, unabhängig von den maximal zwei Buckets.
Dieser Link weist auch darauf hin, dass der TIME_WAIT-Status 60 Sekunden beträgt und nicht über proc eingestellt werden kann.
Zufällige lustige Tatsache:
Sie können die Timer auf dem timeWait mit netstat für jeden Sockel mit sehennetstat -on | grep TIME_WAIT | less
Wiederverwenden Vs Recyceln:
Diese sind interessant, da sie die Wiederverwendung von time_Wait-Sockets ermöglichen, und recycle versetzt sie in den TURBO-Modus:
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.
Ich würde die Verwendung von net.ipv4.tcp_tw_recycle nicht empfehlen, da dies Probleme mit NAT-Clients verursacht .
Vielleicht können Sie versuchen, nicht beide Geräte einzuschalten, um zu sehen, welche Auswirkungen dies hat. Ich würde netstat -n | grep TIME_WAIT | wc -l
für eine schnellere Rückmeldung als Munin verwenden.