開始するためにすべきことの1つは、を修正することnet.ipv4.tcp_fin_timeout=1
です。それは低値への道であり、おそらく30よりもずっと低く取るべきではありません。
これはnginxの背後にあるためです。それはnginxがリバースプロキシとして機能しているということですか?その場合、接続は2倍になります(クライアントへの接続、Webサーバーへの接続)。これらのソケットがどちらの端に属しているか知っていますか?
更新:
fin_timeoutは、FIN-WAIT-2にとどまる時間です(networking/ip-sysctl.txt
カーネルのドキュメントから)。
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.
LinuxでTIME_WAITソケット番号を32kの上限のように維持する必要があるのではないかと思います。これがLinuxがそれらをリサイクルする場所です。この32kはこのリンクで暗示されています:
また、/ proc / sys / net / ipv4 / tcp_max_tw_bucketsは紛らわしいです。デフォルトは180000に設定されていますが、最大twバケットに関係なく、システムに32KのTIME_WAITソケットがあるとTCPが中断します。
このリンクは、TIME_WAIT状態が60秒であり、procを介して調整できないことも示唆しています。
ランダムな楽しい事実:
各ソケットのnetstatでtimewaitのタイマーを見ることができますnetstat -on | grep TIME_WAIT | less
再利用とリサイクル:
これらは興味深いものです。再利用のように見え、time_Waitソケットの再利用を有効にし、recycleはそれを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.
net.ipv4.tcp_tw_recycleを使用すると、NATクライアントで問題が発生するため、使用しないことをお勧めします。
両方のスイッチをオンにせずに、その効果を確認してみてください(一度に1つずつ試して、それぞれの動作を確認してください)。netstat -n | grep TIME_WAIT | wc -l
Muninよりも高速なフィードバックに使用します。