linux 上tomcat 服务器抛出socket异常“文件打开太多”的问题
SEVERE: Socket accept failed
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)
at java.net.ServerSocket.implAccept(ServerSocket.java:453)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)
at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:317)
at java.lang.Thread.run(Thread.java:619)
该问题的根本原因是由于Linux操作系统文件资源的限制导致的。
具体的解决方式可以参考一下:
从上图上我们可以看到open files 的最大数为1024
我们可以通过一下命令修改该参数的最大值. (具体见下图)
这样我们就修改了系统在同一时间打开文件资源的最大数,问题得到解决。