[備忘録][Linux] Too many open files と怒られたとき

備忘録です, 最近はノートにメモしても書いたことすら忘れるので(笑)

エラーメッセージ Too many open files

エラーメッセージで socket()やepoll_create()などが

Too many open files

と表示される場合, それを出してるプロセスIDをまず調べます.

該当プロセスのファイルオープン数

該当のプロセス”PID”がオープンしているファイルやソケットの数は /proc/PID/fd 配下のファイル数を調べます.

kawauso@linux$ ls /proc/PID/fd |wc -w
1024

念のためファイルオープン上限を調べる

オープンできるファイルの上限を念のためしらべます.

kawauso@linux$ ulimit -n
1024

オープンしたファイル(ソケットも含む)が上限に達してることが分かりました.

オープンしているファイルを調べる

/proc/PID/fd 配下のファイル数の一覧を見てみます.

kawauso@linux$ ls -l /proc/PID/fd
total 0
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 0 -> /dev/pts/0
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 1 -> /dev/pts/0
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 10 -> ‘socket:[21379]’
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 100 -> ‘socket:[21468]’
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 1000 -> ‘socket:[22368]’
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 1001 -> ‘socket:[22369]’
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 1002 -> ‘socket:[22370]’
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 1003 -> ‘socket:[22371]’
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 1004 -> ‘socket:[22372]’
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 1005 -> ‘socket:[22373]’
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 1006 -> ‘socket:[22374]’
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 1007 -> ‘socket:[22375]’
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 1008 -> ‘socket:[22376]’
lrwx——. 1 kawauso kawauso 64 Jun 20 11:11 1009 -> ‘socket:[22377]’

ファイルではなく、ソケットの生成が上限に達したことが問題の原因のようです.

netstat にて該当プロセスの通信状況, 想定通り LISTEN しているか, 相手との connection が確立しているかを調べます.

今回の問題の原因

netstat -apnto で調べると、該当のプロセスが lo (local loopback:127.0.0.1) でLISTEN 想定ですが、LISTEN している様子がありません.

該当プロセスを新規で作成した network namespace 上で動作させました.

新規で network namespace を生成した直後は lo が DOWN しています.

その状態で該当プロセスを起動した際, bind() に失敗し、そのリトライ処理として socket() が生成され続るような実装になっていたのが原因でした.

作成された network namespace の lo を UP したところ上記のような事象は解消されました.

/proc/PID/fd 配下のファイル

/proc/PID/fd の配下のファイルについては、man コマンドに詳細に解説されています.

そこから接続先、ポート番号まで分かるとのことですが、それについては後日また.

追伸

写真はあじさい寺として知られている資福禅寺のアジサイです.

まだちょっと時期が早かったですが、下の参道のアジサイは見事でした.

石段の途中の青いアジサイの群生の見頃はもうちょっと先かと思います. 今から楽しみです.