Auf einem Server System mit GlassFish und MySQL traten immer wieder sprunghafte Anstiege der Datenbank Verbindungen auf. Die GlassFish Log-Dateien enthielten an die hundert Einträge mit der IOException Too many open files. Diese Fehler ereigneten sich in unregelmässigen Abständen und das Problem konnte anfangs auch nicht richtig zugeordnet werden.
Nach einiger Zeit wurde festgestellt, dass diese Exception oft in folgenden Fällen ausgelöst wurde:
Eine längere Suche führte letztendlich zum File Descriptor Limit von Linux, das die maximale Anzahl, gleichzeitig geöffneter Dateien und Socket Verbindungen, festlegt. Der Versuch mit dem Befehl ulimit den Standard von 1024 auf 65535 zu erhöhen scheiterte jedoch, da die Änderungen nicht dauerhaft gespeichert wurden. Erst die folgenden zwei Einträge in limits.conf brachten den gewünschten Erfolg.
Folgende Massnahmen zur Behebung des Problems wurden durchgeführt:
limits.conf setzen* soft nofile 65535
* hard nofile 65535
Bei Ausführung von ulimit -a wird nun der neue Wert open files 65535 angezeigt.
[1] GlassFish V2 UR1
[2] /etc/security/limits.conf
Autor: Johannes HammoudKommentare Datum: 01.06.2008