java.io.IOException: 打开的文件过多(Too many open files)
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
一、环境描述:
部署到linux下的tomcat
二、现象:
刚部署完后可以对项目进行访问,后台没有报错,间隔两天后,无法访问项目,日志中报错。
三、错误日志如下:
20-Nov-2017 10:07:15.210 SEVERE [http-nio-8081-Acceptor-0]org.apache.tomcat.util.net.NioEndpoint$Acceptor.run Socket acceptfailed
java.io.IOException: 打开的文件过多(Too many open files)
at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
at un.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422)
at un.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250)
at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:687)
at java.lang.Thread.run(Thread.java:748)
四、报错的原因是:
项目中有七八个定时器,其中有一个定时器是每半小时执行一次,定时器任务是使用ssh方式登录linux服务进行相应的操作,而问题恰恰就在没有关闭定时器每次执行时创建的“ch.ethz.ssh2.Connection” 连接器对象实例,造成了"Too manyopen files "。
五、解决方案: 对Connection对象使用完后进行关闭。
在解决这个问题的过程中,看到网上很多帖子都是在说设置linux的最大文件打开数量,至于说怎么设置,在这里就不说了,反正这个方法无法根本解决问题。我还是说一下程序中存在的BUG问题,在写代码的时候往往就会粗心的忘记对Connection、Session、Socket、节点流和处理流等进行关闭操作,而linux下对文件操作数量有限制,当超过默认的最大打开文件数量1024个时,就会报Too many open files错误。
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献5条内容
所有评论(0)