2012-03-13 293 views
1

我的英語就像3歲的孩子。文件池(如連接池)

最近,我做了一個網站與許多文件訪問。

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

謝謝。

+0

需要我瘋狂的來源, – jeon 2012-03-13 09:27:54

+0

請給我發電子郵件。 – jeon 2012-03-13 09:28:03

+0

可能重複[Linux:socket accept - 「打開太多的文件」](http://stackoverflow.com/q/880557/651140) – 2012-03-13 09:32:43

回答

0

檢查由系統分配的限制 cat /proc/sys/fs/file-nr

(最後一位數字)

如果需要分配更多

編輯/etc/sysctl.conf

添加/更改fs.file-max = xxxxx

應用更改sysctl -p

檢查cat /proc/sys/fs/file-max

您可能還設置用戶限制。

+0

當我刷新頁面它變得越來越大。我認爲我的源頭問題。 – jeon 2012-03-13 09:56:35

+0

你確定你正在關閉所有的流? – 2012-03-13 10:30:36

+0

謝謝身體。這是流式問題。 – jeon 2012-03-16 00:36:59