Sun Java System Application Server Platform Edition 8.2 Release Notes

Selector.select() throws IOException. App Server startup fails. (ID 6322825)

In the current JDK code, the /dev/poll Selector allocates an array of 8192 pollfd entries for use by the Selector. This is exceeds the nofiles ulimit, causing it to fail with an “invalid argument” error. This in turn causes the App Server socket service that connects to MQ during startup to fail with an IOException because the selector.select() is broken.

Solution

Increase the pollfd file descriptor limit. There are two ways to do this:

  1. Execute ulimit -n 8193 on the shell as root.

  2. Increase the hard limit on the number of file descriptors to 8193 or higher:

    1. Check the hard limit with ulimit -n -H.

    2. If less than 8193, edit /etc/system, adding the set rlim_fd_max=8193 command.

    3. Reboot the machine.