2012-04-05 10 views
2

Richtige Lösung für unter Fehler pls, zunehmende ulimit ist keine Lösung für mich.Jboss - java.net.SocketException: Zu viele offene Dateien

Enviroment - Java 7 und Jboss 4.3.2.GA auf roten Hut

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

Was verursacht das Szenario? –

+0

Wenn Jboss gestartet wird, werden zunächst 250 Dateien geöffnet, dann werden für jeden Treffer etwa 100 bis 120 Dateien geöffnet und 10 bis 20 Dateien geschlossen. In meinem Fall logge ich mich einfach in meine App ein und melde mich für diesen Vorgang ab. Es bleiben mehr 100 Dateien geöffnet. Wenn ich einen Belastungstest mache, wenn 30 Benutzer angemeldet sind, kann ich mehr als 1000 geöffnete Dateien sehen. Dieser Vorgang verwendet keine E/A-Vorgänge. – onlykalu

Antwort

0

Wir die ähnlichen Fehler auf RHEL 5 unter mäßiger Belastung erlebt hatten.

Es scheint, dass das Limit für die maximale Anzahl von offenen Dateien nur 1024 ist, was zu niedrig ist.

Check: ulimit -n

Fix für aktuelle Sitzung: ulimit -n 102400

Persistent fix: echo yourusername - nofile 102400 >>/etc/security/limits.conf und starten Sitzung

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

+0

Anfänglich vermisst "zunehmende ulimit ist keine Lösung für mich". Aber wenn es 1024 ist, ist es wirklich zu niedrig. – Vadzim

+0

Ich habe diese Sache gemacht, aber es funktioniert nicht für mich selbst für 200.000 Dateien wird es nach einigen Operationen fehlschlagen – onlykalu

-1

Sie können einfach nicht mit ihm tun nichts, bis Sie erhöhen entweder ulimit oder starten mehr Prozesse. Ich weiß nicht, wie Sie mehrere Instanzen Ihres Servers ausführen können - sehen Sie sich das Handbuch an. Viel Glück!

0

Es scheint, dass ein Stück Code die Sockets offen lässt. Stellen Sie sicher, dass Sie Socket s schließen, wenn Sie damit fertig sind.

+0

Wahrscheinlich, Dateien zu sein. Webapps öffnen selbst normalerweise keine Sockets. – EJP

Verwandte Themen