2012-04-05 46 views
2

正確的解決方案下面的錯誤pls,增加ulimit不是我的解決方案。Jboss - java.net.SocketException:太多打開的文件

環境 - Java 7的和JBoss 4.3.2.GA在Red Hat

22:30:08,913 ERROR [JIoEndpoint] Socket accept failed 
java.net.SocketException: Too many open files 
at java.net.PlainSocketImpl.socketAccept(Native Method) 
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:396) 
at java.net.ServerSocket.implAccept(ServerSocket.java:522) 
at java.net.ServerSocket.accept(ServerSocket.java:490) 
at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61) 
at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:309) 
at java.lang.Thread.run(Thread.java:722) 
+2

這是什麼情況? – 2012-04-05 09:20:35

+0

最初當Jboss啓動時,打開250個文件,每次打開大約需要100到120個文件,打開並關閉大約10到20個文件。在我的情況下,我只是登錄到我的應用程序,並註銷該進程,它保持打開更多的100個文件。如果我有30個用戶在進行負載測試,我可以看到超過1000個文件打開。此操作不使用任何I/O操作。 – onlykalu 2012-04-09 08:27:32

回答

0

我們經歷了中等負荷下的RHEL 5的類似的錯誤。

它似乎默認最大打開文件限制只是1024這是太低。

檢查:ulimit -n

修正了本屆會議:ulimit -n 102400

持久的解決辦法:echo yourusername - nofile 102400 >>/etc/security/limits.conf並重新啓動會話

參見 https://serverfault.com/questions/44182/is-there-a-way-to-set-ulimit-for-all-root-processes

+0

最初錯過「增加ulimit不是我的解決方案」。但是,如果它是1024這實在太低了。 – Vadzim 2012-04-05 09:30:11

+0

我已經做了這件事,但它對我來說不起作用,即使對於一些操作後它失敗的200,000個文件也是如此 – onlykalu 2012-04-10 04:54:05

-1

你不能用它做任何事情,直到你要麼增加ulimit要麼啓動更多的進程。我不知道如何運行服務器的多個實例 - 請查看手冊。祝你好運!

0

看起來有些代碼會打開插座。確保在完成後關閉Socket

+0

更可能是文件。 Webapps通常不會自己打開套接字。 – EJP 2013-11-14 23:06:05

相關問題