我想知道太多文件打开错误的确切问题。我通过谷歌寻求解决方案,但我不知道为什么会发生这个问题,以及如何解决这个问题。这是关于超限值的东西吗?
堆栈错误:严重:套接字接受失败的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(DefaultServerSocketFactory.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);返回名称;
对这个错误有什么建议吗?
发布于 2013-11-03 07:05:58
问题几乎可以肯定的是,您正在代码中的某个地方泄漏文件句柄。我有猫猫在没有遇到这种情况的情况下一次熬夜好几个月。
发布于 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。
https://stackoverflow.com/questions/19750474
复制相似问题