Zu viele offene Dateien auf dem Socket

Zu viele offene Dateien auf dem Socket

Ich habe ein großes Problem, und zwar, dass die Produktionsanwendung meiner Firma, die ich leider nicht herunterfahren und neu starten kann (ich weiß nicht genau, wie das geht, und ich möchte keinen Fehler machen), beim Versuch, einen Socket zum Lesen von einem FTP-Server zu öffnen, viele Ausnahmen ausspuckt, weil zu viele Dateien geöffnet sind.

2013-01-02 16:19:03,222 ERROR [main] software.background.Program(Program.java:doExecute{225}) - Exception during ftp transfer
someclasses.ftp.FtpException: Could not create connection to xxxx
    at someclasses.communication.ftp.FtpImpl.connect(FtpImpl.java:114)
    at Program.doExecute(Program.java:176)
    at Program.main(Program.java:287)
Caused by: java.net.SocketException: Too many open files
    at java.net.Socket.createImpl(Socket.java:397)
    at java.net.Socket.<init>(Socket.java:371)
    at java.net.Socket.<init>(Socket.java:189)
    at someclasses.Ftp.connect(Ftp.java:386)

Ich verstehe, dass das Limit für offene Dateien/Sockets usw. pro Anwendung erreicht ist. Gibt es eine Möglichkeit, dieses Maximum vorübergehend zu erhöhen, ohne die Anwendung zu schließen? Ich habe den Befehl ausgeführt ulimitund er zeigt an unlimited. Ich habe versucht zu überprüfen, wie viele Verbindungen mit dem Befehl geöffnet sind, lsof -p PIDaber es zeigt „Befehl nicht gefunden“ an.

Wäre sehr froh, wenn mir jemand helfen könnte, einen anderen ähnlichen Effekt zu finden, den lsof hat (ich glaube, es ist eine Red-Hat-Maschine) und mir einen Rat geben könnte, wie ich das vorübergehend beheben kann? Die angenehmste Lösung hierfür wäre, die Anzahl der Dateien/Sockets zu erhöhen, die die Anwendung öffnen kann. Dies ist nur eine einfache Java-Anwendung.

Dank im Voraus!

BEARBEITEN Eine andere Lösung wäre, wenn es einen Befehl gäbe, mit dem ich nachschauen könnte, wie dieses Programm von Anfang an mit allen eventuellen Flags ausgeführt wurde. Dann könnte ich es vielleicht erfolgreich neu starten. Dies ist eine Legacy-App.

Antwort1

Das Ganze endete mit einem Neustart der Anwendung. Ich habe das ulimit -n auf 2048 geändert und die Konfiguration neu geladen. Alle Prozesse erbten jedoch die alte Konfiguration und die Anwendung musste neu gestartet werden.

verwandte Informationen