java - 文件池(如连接池)

标签 java file-io pooling

我的英语就像三岁的婴儿。

最近,我制作了一个具有多个文件访问权限的网站。

不幸的是,我的 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/

相关文章:

c++ - 平均池 C++ 错误

Python MySQL 连接池

java - 在 Spring MVC Controller 中注入(inject) Jaxb2Marshaller

C++ freopen 2个文件错误

java - 如何在 android 中备份电池插头上的数据?

java - 优化JAVA中传递文件解析的方式

java - LdapTemplate 搜索捕获并行流和 LdapTemplate 异常

java - Android:检索其他应用程序的共享首选项(已root的设备)

java - Tomcat Server 7 的 Spring Maven Webapp 错误

java - 如何在 onCreate 方法之外初始化 CastContext