在jboss-portal-2.7.2的部署阶段出现错误“ java.net.SocketException:打开的文件太多”

abg*_*abg 6 java file-io jboss jboss-portal socketexception

在日志消息中的某个位置启动jboss-portal-2.7.2时:

2013-01-30 20:32:02,541 ERROR [org.apache.tomcat.util.net.JIoEndpoint] Socket accept failed
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:61)
        at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:309)
        at java.lang.Thread.run(Thread.java:662)
Run Code Online (Sandbox Code Playgroud)

在deploy文件夹中,共有20个war模块。有什么办法吗?

onl*_*alu 5

为运行 tomcat 的用户增加服务器上的 ulimit。

要检查 ulimit:

ulimit -n
Run Code Online (Sandbox Code Playgroud)

增加当前会话:

ulimit -n 102400
Run Code Online (Sandbox Code Playgroud)

您可以通过编辑进行永久性更改/etc/security/limits.conf


Coo*_*ans 3

此消息基本上意味着您已达到操作系统设置的可以打开的最大文件数限制。

解决此问题的正确方法是诊断输出lsof -p <jboss_java_pid> 并找出导致打开这些文件的原因。然后继续相应的解决方案。

快速修复解决方案可能是增加操作系统上的全局最大文件限制或增加用户的文件限制或两者兼而有之。例如,在 Fedora 中,可以在文件中设置/proc/sys/file-max全局文件最大限制和/etc/security/limits.conf用户限制。