3

我们的是一个 Struts2 java webapplication,使用 hibernate 3.5 ORM。当我们在应用程序上执行一些并行操作时,我们会遇到以下异常,并且 java 进程 cpu 利用率处于最大值。

May 15, 2012 12:39:59 AM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
    at java.net.ServerSocket.implAccept(ServerSocket.java:462)
    at java.net.ServerSocket.accept(ServerSocket.java:430)
    at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:59)
    at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:210)
    at java.lang.Thread.run(Thread.java:662)

请相应地建议我们。

4

2 回答 2

7

我猜你是在一个基于linux的操作系统上?看来您需要增加最大数量。每个进程的文件句柄。

看看这里:http ://ehaselwanter.com/en/blog/2009/03/13/tomcat-too-many-open-files/

于 2012-05-15T10:01:48.750 回答
1

它超出了打开文件描述的数量限制。解决方案:增加打开文件数量的硬限制和软限制。

soft nofile 999999 hard nofile 999999 在 /etc/security/limits.conf 文件中

于 2014-03-13T07:31:01.553 回答