« パソコン通信 | メイン | Eclipseの功罪 »
2005年2月19日
CLOSE_WAITがたまる
カテゴリー: [プログラミング]今日(もう昨日か)は,ほとんど,ずっとデバッグでした.
さんざん悩ませてくれました.一応解決したようなので,メモ書きとして書いておくことにします.
Javaで書いた,あるTCP通信をするプログラムで,サーバ側にCLOSE_WAITの状態のTCP接続がたまり続けて,ファイルディスクリプタを食いつぶすというバグが見つかりました.長時間動かしていると,"Too Many Open Files" になって,何にもソケットの操作ができなくなり,お手上げになってしまいます.
いろいろと切断方法を変更してみても,CLOSE_WAIT な接続ができてしまいます.
結局,SocketのshutdownOutput() と shutdownInput() を呼び出すことで,回避できました.原因がはっきりしないのが,どうにも気にくわないんですが.shutdownOutput() が TCPの接続修了処理をやるみたいなので,それのおかげだと思うのですが...
しかし,今まで普通に close しても問題を起こしたことはなかったんですが,何がおかしかったんでしょうね.謎です.こういう,動いたけど理由が分からないというのが,最悪ですね.
投稿者 shingo : 2005年2月19日 01:41
トラックバック
このエントリーのトラックバックURL:
http://isolinear.info/cgi-bin/mt/mt-tb.cgi/48