はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

tomcatでToo many open filesが出たときの対処法 (誤情報多し)

service tomcat start (中ではデーモン起動)

とかでtomcatを起動している環境で使っているときにToo many opne filesとでてしまうときの対処法。

もちろん、根本的にはバグとかでファイルクローズしていないかも並行して調査が必要ですが、インフラ的には

デフォルト省略値の「ulimit -n 1024」を「ulimit -n 8192」とかにすれば解決。

しかし、問題はどこにulimitを記述するか。

ネット上には

  • /etc/security/limits.conf

に書けばOKという情報も多いのですが、今回の場合はこれはアウト。

理由はデーモン起動ではpam認証を使わないので/etc/security/limits.confは使えないから。

これ、設定して確認して安心して後日リブートすると上限値が戻ってしまい再現という最悪の結末になりますので本当に注意を。

正解は、/etc/rc.d/init.d/tomcat なスタート用シェルに追記すること

例)

start() {
ulimit -n 8192
$DEAMON \
...

今回は以下の情報に助けられました。

http://yumewaza.yumemi.co.jp/2010/07/limitsconf.html

http://www.matsuaz.com/matsumotojs/2010/12/24/1293117835413.html