Too many open files错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Too many open files错误相关的知识,希望对你有一定的参考价值。

1、现象
启动tomcat程序报错:Too many open files

Caused by: java.io.IOException: Too many open files
    at sun.nio.ch.EPollArrayWrapper.epollCreate(Native Method)
    at sun.nio.ch.EPollArrayWrapper.<init>(EPollArrayWrapper.java:130)
    at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:68)
    at sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:36)
    at java.nio.channels.Selector.open(Selector.java:227)
    at org.jboss.netty.channel.socket.nio.NioWorker.register(NioWorker.java:102)
    ... 6 more

2、原因
进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数,通过命令ulimit -a 可以查看当前系统设置的最大句柄数是多少;open files那一行就代表系统目前允许单个进程打开的最大句柄数,默认是1024。先看看启动的tomcat进程打开了多少文件:
sudo lsof -p 8321 | wc -l
技术分享图片
8321是进程的ID,可看到已经超过了系统设置的大小。

3、解决方法
增大系统的文件限制数
vim /etc/security/limits.conf //在最后加入

* soft nofile 65535  
* hard nofile 65535  

或者

* - nofile 65535

说明:“nofile”项有两个限制措施:hard和soft, 要使修改过的最大打开文件数生效,必须对这两种限制进行设定; 如果使用”-“字符设定, 则hard和soft会被同时设定。

4、Ubuntu系统不生效
Ubuntu系统按上面的设置不会生效,须要注明用户才会生效(其他系统不用)。

pdsadmin - nofile 65535

技术分享图片

然后重新登录xshell,不需要重启,ulimit -n 可以看到文件打开数已经是65535了,这就是ubuntu系统 设置limits.conf不生效的原因,一定不能直接用 * 。

以上是关于Too many open files错误的主要内容,如果未能解决你的问题,请参考以下文章

错误 open too many files

too many open files怎么解决

Python错误提示:[Errno 24] Too many open files的分析与解决

nginx报错accept() failed (24: Too many open files) 分析解决

Too many open files错误与解决方法

如何解决错误 java.net.SocketException: Too many open files