Linuxで「Too many open files」が発生してしまう原因としてファイルディスクリプタ数の上限があります。
ファイルディスクリプタ数はファイルを開いていたり、ソケットを張ることでもファイルディスクリプタ数を消費するので、ApacheやTomcatでWEBサーバーを構築したりしていると比較的起きやすくなると思います。
解決策ですが、まずは現状のファイルディスクリプタ数の上限を確認してみます。
# ulimit -n
1024
このように表示されたら上限は1024です。
この上限を上げるには
# ulimit -n 65536
このように書くと、上限を65536まで上げることができます。
ただし、この増やし方だと、再起動すると元に戻ってしまうので、永続化させるためにファイルに書いておきます。
# vi /etc/security/limits.conf
このファイルの末尾に追加いたします。
今回は上限を65536で設定しておきます。
* soft nofile 65536
* hard nofile 65536
これでサーバーが再起動しても上限は65536のまま起動してくれると思います。
コメント