首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat错误太多打开的文件

Tomcat错误太多打开的文件
EN

Stack Overflow用户
提问于 2013-11-03 06:39:38
回答 2查看 4.8K关注 0票数 2

我想知道太多文件打开错误的确切问题。我通过谷歌寻求解决方案,但我不知道为什么会发生这个问题,以及如何解决这个问题。这是关于超限值的东西吗?

堆栈错误:严重:套接字接受失败的java.net.SocketException:昨日在java.net.ServerSocket.implAccept(ServerSocket.java:530) at java.net.ServerSocket.accept(ServerSocket.java:498) at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServer‌​SocketFactory.java:61) at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:352) - user2883376的java.net.PlainSocketImpl.socketAccept(原生方法)上打开了太多文件

Linux服务器--这是我在代码中最后一次更新以获取基于语言的消息。ClassPathXmlApplicationContext("app-context.xml");上下文=新的ApplicationContext名称=context.getMessage(键,null,locale);返回名称;

对这个错误有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2013-11-03 07:05:58

问题几乎可以肯定的是,您正在代码中的某个地方泄漏文件句柄。我有猫猫在没有遇到这种情况的情况下一次熬夜好几个月。

票数 4
EN

Stack Overflow用户

发布于 2017-05-05 21:51:34

尽管如果在某一点上提出了"ulimit“,那么tomcat就会停止导致同样的错误。

因此,为了避免,您可以使用命令"lsof -u username“或简单地”lsof-u username“检查Linux上应用程序用户打开的文件列表,并查看是否打开了与代码相关的文件( eg..properties文件),如果是这样的话,可以使用对特定tomcat用户的#-u -9 lsof -t -u username命令来关闭这些特定文件。

您需要修复代码来加载这些文件,只需在类的静态块中编写。这样,即使任意数量的用户多次点击,也只能加载一个文件。

现在,您可以在使用相同的lsof命令部署新的更改之后重新检查,并查看。只会看到一个文件。这将使永久地修复您的问题,而不会每次都引发ulimit。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19750474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档