Sun Java System Application Server Platform Edition 8.2 リリースノート

Selector.select()IOException をスローし、Application Server の起動が失敗する。(ID 6322825)

現在の JDK コードでは、/dev/poll セレクタはセレクタが使用するために 8192 pollfd エントリの配列を割り当てます。これが nofiles ulimit を超過するため、「引数が正しくありません」のエラーで失敗します。さらに、selector.select() が壊れているため、起動時に MQ に接続する Application Server のソケットサービスが IOException で失敗します。

解決法

pollfd ファイルの記述子制限を増やします。これには次の 2 つの方法があります。

  1. ルートユーザーとしてシェル上で ulimit -n 8193 を実行します。

  2. ファイル記述子の数値の強い制限値を 8193 以上に増やします。

    1. ulimit -n -H コマンドで強い制限値を確認します。

    2. 8193 よりも小さい場合は、/etc/system を編集して、set rlim_fd_max=8193 コマンドを追加します。

    3. マシンをリブートします。