CLOSE_WAITとは

とあるところのとあるサービスでコネクションが埋まる問題があり、追っかけていくと CLOSE_WAIT なソケットを持ったプロセスがたくさんいるというところに辿り着いた。

だいたい知りたいことの99%はこちらの記事に書いてあった。
https://qiita.com/hana_shin/items/7f89edbbd5dd4084b742
ありがとうインターネット。

#3 CLOSE_WAITとは?
パッシブクローズ側がとる状態です。

今回 パッシブクローズ側 のアプリケーションはサーバだった。
つまりクライアントが切断したのち、負荷だかバグだかなんだかの理由でサーバ側でTCPソケットを close() していないというのが CLOSE_WAITなのだ。

調べていたプロセスも同じで、クライアントから接続を切られた後も延々unixsocketからreadしたりファイルシステムを舐め回したりしていて全然TCPソケットを close() する気配がなかった。

自分でコードを書くときは足りなくなりそうなリソースから先に解放していけるような書き方を意識した方が良いかもしれない。