Linux部署Java应用Too many open files解决方案


[#|2010-04-03T19:24:11.314+0800|SEVERE|glassfishv3.0|grizzly|_ThreadID=18;_ThreadName=Thread-1;|doSelect IOException
java.io.IOException: Too many open files
at sun.nio.ch.IOUtil.initPipe(Native Method)
at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:49)
at sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:18)
at java.nio.channels.Selector.open(Selector.java:209)
at com.sun.grizzly.util.Utils.openSelector(Utils.java:78)
at com.sun.grizzly.TCPSelectorHandler.initSelector(TCPSelectorHandler.java:413)
at com.sun.grizzly.TCPSelectorHandler.preSelect(TCPSelectorHandler.java:393)
at com.sun.grizzly.SelectorHandlerRunner.doSelect(SelectorHandlerRunner.java:183)
at com.sun.grizzly.SelectorHandlerRunner.run(SelectorHandlerRunner.java:130)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
|#]

查看系统允许打开的最大文件数

#nano /proc/sys/fs/file-max

发现足够大了。

查看每个用户允许打开的最大文件数

ulimit -a

发现系统默认的是open files (-n) 1024,问题就出现在这里。

在系统文件/etc/security/limits.conf中修改这个数量限制,

在文件中加入内容:

* soft nofile 65536

相关内容