Skip to main content

Die IEC-Applikation kann keine weiteren Datei-Handles öffnen

Wichtig

Bevor Sie das Limit für Datei-Handles auf Ihrem System ändern, sollten Sie dringend die Konsequenzen für alle Dienste auf Ihrem Linux-System bedenken. Wir empfehlen stattdessen die Ursache für das Leck zu finden.

Fehlerbehebung

. Folgende Effekte können durch ein Datei-Handle-Leck verursacht werden:
  • Verlust des Lizenzstatus. Die WIBU-Lizenz wird nach einer bestimmten Zeit unterbrochen.

  • Neue Dateien können nicht geöffnet werden.

Das Standardverhalten von Linux-Prozessen ist, eine maximal zulässige Anzahl von offenen Datei-Handles zu erlauben. Wenn ein Prozess dieses Limit erreicht, können keine neuen Dateien mehr geöffnet werden.

Sie können den Grenzwert Ihres Systems mit dem Konsolenbefehl überprüfen:

ulimit -n

Jeder Prozess in Linux hat eine Prozess-ID und der Kernel stellt detaillierte Informationen über jeden Prozess in seinem Datei-/Ordnersystem procfs bereit. Somit können Sie einfach die Anzahl der Datei-Handles ermitteln, die ein Prozess zu einem bestimmten Zeitpunkt hat.

. Wir empfehlen die folgenden Schritte, um ein mögliches Dateihandle-Leck zu untersuchen:
  1. Finden Sie die Prozess-ID der CODESYS-Laufzeitumgebung

    Sie können Standard-Linux-Tools verwenden, um die Prozess-ID der CODESYS-Laufzeitumgebung zu finden:

    • htop zeigt normalerweise die Prozess-ID in der erste Spalte (PID) an.

    • top zeigt normalerweise die Prozess-ID in der erste Spalte (PID) an.

    • Sie können die Befehle ps und grep für eine schnelle Suche kombinieren:

      ps aux | grep codesyscontrol

    Notieren Sie sich die Prozess-ID und verwenden Sie sie in den folgenden Befehlen, in denen der Platzhalter <pid> verwendet wird

  2. Überprüfung und Überwachung der Datei-Handles

    Listen Sie nun die Einträge im procfs, um die Datei-Handles des Laufzeitprozesses zu sehen.

    sudo ls -la /proc/<pid>/fd/

    Beispiel 4. Dies könnte folgendermaßen aussehen
    _rtsl_img_iec_filehandle.png


    • Wenn es sich bei den Datei-Handles um „echte“ Dateien handelt, können Sie den Pfad sehen. Andere Datei-Handles könnten Sockets oder ähnliches sein.

    • Wenn Sie diesen Befehl mehrmals hintereinander ausführen, können Sie beobachten, ob Sie eine zunehmende Anzahl von Datei-Handles haben und welche Dateien geöffnet sind.

    • Mit dem Befehl watch wird eine Ansicht erstellt, die sich alle 2 Sekunden aktualisiert.

      watch sudo ls -la /proc/<pid>/fd/

Mit diesen Maßnahmen können Sie die geöffneten Handles überwachen und somit herausfinden, welche Dateien an dem Dateihandle-Leck beteiligt sein könnten.