Selector.select() が IOException をスローし、Application Server の起動が失敗する。(ID 6322825)
現在の JDK コードでは、/dev/poll セレクタはセレクタが使用するために 8192 pollfd エントリの配列を割り当てます。これが nofiles ulimit を超過するため、「引数が正しくありません」のエラーで失敗します。さらに、selector.select() が壊れているため、起動時に MQ に接続する Application Server のソケットサービスが IOException で失敗します。
解決法
pollfd ファイルの記述子制限を増やします。これには次の 2 つの方法があります。
-
ルートユーザーとしてシェル上で ulimit -n 8193 を実行します。
-
ファイル記述子の数値の強い制限値を 8193 以上に増やします。
-
ulimit -n -H コマンドで強い制限値を確認します。
-
8193 よりも小さい場合は、/etc/system を編集して、set rlim_fd_max=8193 コマンドを追加します。
-
マシンをリブートします。