Selector.select() 抛出 IOException。Application Server 启动失败。(ID 6322825)
在当前 JDK 代码中,/dev/poll 选定器会将包含 8192 个 pollfd 条目的数组分配给该选定器使用。这将超出 nofiles ulimit,从而导致分配失败,并显示错误“参数无效”。selector.select() 的中断导致在启动期间连接至 MQ 的 Application Server 套接字服务失败,并抛出 IOException。
解决方法
放宽对 pollfd 文件描述符的限制。有两种方法可完成此操作:
-
以 root 用户身份在 shell 上执行 ulimit -n 8193。
-
将文件描述符数目的严格限制增加为 8193 或更高:
-
使用 ulimit -n -H 检查严格限制。
-
如果小于 8193,请编辑 /etc/system,以添加 set rlim_fd_max=8193 命令。
-
重新引导计算机。