我的英语就像三岁的婴儿。
最近,我制作了一个具有多个文件访问权限的网站。
不幸的是,我的 tomcat 给了我以下错误消息
Fatal: 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:352)
at java.lang.Thread.run(Thread.java:662)
org.apache.tomcat.util.net.JIoEndpoint$Acceptor run
当我在短时间内发送请求时会发生这种情况,我猜为此作业打开了太多流。
有谁知道如何解决这个问题吗?
我的环境是 { tomcat 6.0.35, java 1.6.0_31, centos 5 } 啊,这只发生在 Linux 上;
谢谢。
最佳答案
检查系统分配的限制
cat/proc/sys/fs/file-nr
(最后一个数字)
如果需要,分配更多
编辑/etc/sysctl.conf
添加/更改fs.file-max = xxxxx
应用更改sysctl -p
检查cat/proc/sys/fs/file-max
您可能还设置了用户限制。
关于java - 文件池(如连接池),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9681341/