6

Wir verwenden Hudson als ein kontinuierliches Integrationssystem, um automatisierte Builds (nächtlich und basierend auf CVS Polling) von vielen unserer Projekte auszuführen.Wie behebt man das Problem "Zu viele offene Dateien" in Hudson?

Bei einigen Projekten wird CVS alle 15 Minuten abgefragt, bei einigen anderen alle 5 Minuten und bei einigen stündlich.

Alle paar Wochen werden wir einen Build erhalten, die mit der folgenden Ausgabe fehlschlägt:

FATAL: java.io.IOException: Too many open files 
java.io.IOException: java.io.IOException: Too many open files 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:148) 

Der nächste Build immer gearbeitet (mit 0 Änderungen), so dass wir angekreidet es immer bis zu 2 Baujobs bei wird ausgeführt die gleiche Zeit und passiert, um zu viele Dateien während des Prozesses geöffnet zu haben.

Dieses Wochenende hatten wir einen Build fehlgeschlagen Freitag Nacht (automatische nächtliche Build) mit der Nachricht und jeder andere nächtliche Build auch fehlgeschlagen. Irgendwie hat dies Hudson dazu veranlasst, jedes Projekt, das fehlgeschlagen ist, kontinuierlich zu bauen, bis das Problem gelöst war. Dies führte zu einem Build alle 30 Minuten oder so von jedem Projekt bis irgendwann Samstag Nacht, als das Problem magisch verschwand.

Antwort

4

Dies ist Hudson Ausgabe 715 (http://issues.hudson-ci.org/browse/HUDSON-715). Die aktuelle Empfehlung besteht darin, die "maximale Anzahl gleichzeitiger Abfragestränge" festzulegen, um die Abfrageintensität niedrig zu halten.

+0

Unterbrochener Link für Ausgabe 715. Können Sie aktualisieren? –

0

Ändern Sie die Systemgrenzen für maximal geöffnete Dateideskriptoren pro Prozess? Wie in ulimit -n für den Java-Prozess?

0

Ich habe dieses Problem mit einer anderen Java-Anwendung erlebt, die auf Debian läuft, es ging weg, als wir auf Java Version 1.6.0.0 heruntergestuft wurden. Java hat niemals ungenutzte Verbindungen geschlossen, wodurch die Ausnahme ausgelöst wurde.

3

Siehe https://wiki.jenkins-ci.org/display/JENKINS/I%27m+getting+too+many+open+files+error für das, was wir von Ihnen benötigen, um diese Art von Problem zu beheben.

+0

Wir hatten das Problem schon lange nicht mehr. Wenn es wieder auftaucht, werde ich die angeforderten Informationen sicher mitschicken. – Randyaa

+0

Kohsuke - vielleicht könnte eine Jenkins-Erweiterung die Datei-Deskriptor-Limits und die Selbstreparatur im Auge behalten, indem Sie den GC dann ausführen? Wir laufen auf Boxen mit großen Speichergrößen (die bald in der 96G-Reihe sein werden), so dass es für einige Zeit laufen kann, bevor Sie versuchen, GC. –

+0

Das klingt nach einem tollen Hack! Wo ist der RFE in http://issues.jenkins-ci.org/? :-) –

0

Eines der häufigsten Probleme, die "Zu viele geöffnete Dateien" verursachen, ist die Aktivierung und Konfiguration des Active Directory-Plugins in Jenkins. Es gibt bekannte Probleme mit diesem Plugin, die dazu führen, dass eine enorme Anzahl von Threads angezeigt wird und "Too many open files" auch in den Logs. Nach der Deaktivierung und dem Wechsel zur LDAP-Authentifizierung habe ich Jenkins nicht mehr zum Aufhängen erlebt.

Verwandte Themen