web-dev-qa-db-ja.com

lsof -iを実行すると、CLOSE_WAITに多くの接続が表示されますか?心配する必要がありますか

だから私はlsof -i | wc -l定期的に、420行のうち240〜255行がCLOSE_WAIT状態。 TCP接続はどのようにしてこの状態になりますか?

心配する必要がありますか?どのようにトラブルシューティングする必要がありますか?

8
user20414

(私はmikegrbの答えを編集するつもりでしたが、それをあまりにも多く殺しすぎていると判断しました)

CLOSE_WAITは、その意味とほぼ同じです。カーネルは、ローカルプロセスがファイル記述子を閉じるのを待ってから、エントリを削除します。 TCP接続は完全に切断されており、遠端は接続がfinitoであるという印象を受けている可能性がありますが、あなたの端は物事を保持しています。

唯一の懸念は、多くのCLOSE_WAITエントリがカーネルメモリとファイル記述子テーブルエントリを消費することです。これらのエントリが大量にある場合、問題になる可能性があります。見ているエントリが一時的なものである場合、おそらくlot of TCP connections)を循環しているだけで、小さな接続が閉じられてからプロセスがファイル記述子を閉じるまでの短い時間内のそれらの割合。一方、それらが永続的である場合(ポートとIPアドレスは時間とともに変化しない)何かが記述子をリークしているため、修正が完了すると常にfdsが閉じられるように修正する必要があります。mikegrbが言ったように、新しいバージョンでは問題がすでに修正されている可能性があるため、関連するメーリングリストまたは変更ログの調査に関する質問はおそらく正当化されます。

13
womble

CLOSE_WAIT状態は、接続を閉じるために相手側がFINセグメントを送信したことを意味します。接続はまだ確立されています。これは、半二重と見なすことができるモードであり、この端でバッファーをフラッシュし、データの最後のビットを最後に送信して、接続を閉じる前に接続を閉じるように要求します。

CLOSE_WAITに多くの接続が残っている場合、それは、責任のあるプロセスがCLOSE_WAITに入るとソケットを閉じていないことを意味します。 tcpdumpまたは他のネットワークトラフィックキャプチャツールを使用して、パケットを確認できます。

責任あるプロセスも見てください。好奇心から、責任あるプロセスは何ですか?新しい修正バージョンが利用可能になるか、バグレポートを提出する時がきたかもしれません;)

2
mikegrb

サーバー上で実行されているアプリケーションのどこかでリソース(ファイルハンドル、ネットワーク接続)を閉じていない可能性があります。

0
Michael Munsey

弱いネットワークで運用している場合は、次のように調整できます。

  • ulimitsおよび/proc経由のファイル記述子の最大数(システム全体)
  • TCP待ち時間を/procで短縮できます
0
savecore