サーバー側でTIME_WAITを多くするとコストはいくらになりますか? 質問する

サーバー側でTIME_WAITを多くするとコストはいくらになりますか? 質問する

サーバーに短時間の接続を多数行うクライアントがあると仮定します。

クライアントが接続を閉じると、クライアント側には多くのポートが状態のまま残りますTIME_WAIT。クライアントのローカル ポートが不足するため、すぐに新しい接続を試行できなくなります。

サーバーが接続を閉じると、TIME_WAITサーバー側で多数の が表示されます。ただし、これによって何か害があるのでしょうか? クライアント (または他のクライアント) は、ローカル ポートが不足することはないため、接続を試行し続けることができ、TIME_WAITサーバー側の状態の数が増えます。最終的に何が起こるのでしょうか? 何か悪いことが起こりますか? (速度低下、クラッシュ、接続の切断など)

私の質問は「 の目的は何ですか?」ではなく、「サーバー上に状態がTIME_WAITたくさんある場合はどうなりますか?」であることに注意してください。TCP/IP で接続が閉じられたときに何が起こるか、また状態が必要な理由は既にわかっています。トラブルシューティングしようとしているのではなく、潜在的な問題が何であるかを知りたいだけです。TIME_WAITTIME_WAIT

netstat -nat | grep :8080 | grep TIME_WAIT | wc -l簡単に言うと、を印刷するとします100000。何が起こるでしょうか? OS のネットワーク スタックが遅くなるでしょうか? 「開いているファイルが多すぎます」というエラーが発生するでしょうか? それとも、何も心配する必要はありませんか?

ベストアンサー1

各ソケットはTIME_WAITカーネル内のメモリをいくらか消費します。通常はESTABLISHEDソケットよりは多少少ないですが、それでもかなりの量です。数が多すぎるとカーネル メモリを使い果たすか、そのメモリを他の目的に使用できるため、少なくともパフォーマンスが低下する可能性があります。TIME_WAITソケットは開いているファイル記述子を保持しません (適切に閉じられていると仮定)。そのため、「開いているファイルが多すぎます」というエラーを心配する必要はありません。

ソケットは特定のsrc/ dstIP アドレスとポートも固定するため、間隔中は再利用できませんTIME_WAIT。(これが状態の本来の目的ですTIME_WAIT。) 同じポート ペアで再接続する必要がない限り、ポートの固定は通常は問題になりません。ほとんどの場合、片側は一時ポートを使用し、もう片側だけが既知のポートに固定されます。ただし、同じTIME_WAIT2 つの IP アドレス間で繰り返し頻繁に接続している場合、非常に多くのソケットが一時ポート スペースを使い果たす可能性があります。これは、この特定の IP アドレス ペアにのみ影響し、他のホストとの接続の確立には影響しないことに注意してください。

おすすめ記事