Open file limit unter Linux

  • Kürzlich hatte ich ein Problem mit vielen offenen Dateien auf einem Linux System, die dazu führten, dass ein Prozess nicht mehr in der Lage war die ihm aufgetragene Verarbeitung weiter durchzuführen.

    Eine Abfrage mit ulimit –a brachte folgende Systemeinstellungen zurück:


    Quellcode

    1. # ulimit –a
    2. core file size (blocks, -c) 0
    3. data seg size (kbytes, -d) unlimited
    4. file size (blocks, -f) unlimited
    5. pending signals (-i) 38912
    6. max locked memory (kbytes, -l) 32
    7. max memory size (kbytes, -m) unlimited
    8. open files (-n) 1024
    9. pipe size (512 bytes, -p) 8
    10. POSIX message queues (bytes, -q) 819200
    11. stack size (kbytes, -s) 8192
    12. cpu time (seconds, -t) unlimited
    13. max user processes (-u) 38912
    14. virtual memory (kbytes, -v) unlimited
    15. file locks (-x) unlimited

    Die Grenze für offene Dateien steht hier also systemseitig auf 1024. Aus verschiedenen Quellen geht hervor, dass diese Grenze in der Datei /etc/security/limits.conf allgemein anzupassen ist. Ein dortiger Eintrag zeigte bei mir aber leider keine Wirkung, weder in der aktuellen, noch in einer komplett neuen Shell-Session.

    Eine benutzergebundene Lösung schaffte dagegen Abhilfe. In meinem Fall legte ich für den Benutzer root im Home-Verzeichnis eine neuen Datei .bashrc mit folgendem Inhalt an

    vi /root/.bashrc

    # Setzte open file limit auf ein x-faches von 1024 (10)

    Quellcode

    1. ulimit -n 102400

    Die Änderung greift in der nächsten neuen Shell-Session (Prüfung durch Abfrage mit ulimit –a) des Benutzers "root" und kann für beliebige andere Benutzer verwand werden. Falls jemand eine elegantere und vor allem systemweite Lösung findet, bitte melden.

    2.406 mal gelesen