JBoss下"Too many open files"的解决方法

来源:互联网 发布:单片机与arm 编辑:程序博客网 时间:2024/04/30 07:08

linux环境下当连接数过多时JBoss通常会出现如下的错误提示:

WARN  [org.apache.tomcat.util.net.PoolTcpEndpoint] Reinitializing ServerSocket
 ERROR [org.apache.tomcat.util.net.PoolTcpEndpoint] Endpoint ServerSocket[addr=/0.0.0.0,port=0,localport=8080] ignored exception: java.net.SocketException: Too many open files
java.net.SocketException: Too many open files
 at java.net.PlainSocketImpl.socketAccept(Native Method)
 at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
 at java.net.ServerSocket.implAccept(ServerSocket.java:450)
 at java.net.ServerSocket.accept(ServerSocket.java:421)
 at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:60)
 at org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.java:407)
 at org.apache.tomcat.util.net.PoolTcpEndpoint.run(PoolTcpEndpoint.java:647)
 at java.lang.Thread.run(Thread.java:595)

原因:

linux中,每个socket连接都使用文件描述符进行标识,文件描述符属于系统资源,存在使用上的限制;缺省情况下JBoss能使用的最大描述符数是系统默认的最大文件描述符数(通过命令ulimit -H -n来获得),当连接数达到一定规模,使用的socket连接超过最大描述符的数量时就会出现此错误。

解决方法:

1、编辑$JBOSS_HOME/bin目录下的run.conf;

2、定位到:

#MAX_FD="maximum"

去掉注释,将其修改为所需的数值,例如:将文件描述符的最大值设置为10000;

MAX_FD=10000

 

 

 

原创粉丝点击