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错误的主要内容,如果未能解决你的问题,请参考以下文章
Python错误提示:[Errno 24] Too many open files的分析与解决