1. Einleitung

In Linux-Umgebungen können bestimmte Prozesse – insbesondere Monitoring-Tools wie cAdvisor – auf Systemlimits stoßen. Häufige Fehler sind:

  • „too many open files“
  • „inotify_init: too many open files“
  • Container stürzt mit Exit-Code 255 ab

Diese Fehler treten auf, wenn die Anzahl der offenen Dateien oder die Anzahl der inotify-Watches/Instanzen überschritten wird.


2. Systemlimits dauerhaft erhöhen

2.1 Offene Dateien (fs.file-max)

Das Systemlimit für offene Dateien wird über den Kernel-Parameter fs.file-max gesteuert.

Befehle:

Hinweis:
Beide Methoden sind möglich. Die Datei in /etc/sysctl.d/ wird auf systemd-basierten Systemen bevorzugt.


2.2 inotify-Limits erhöhen

inotify wird verwendet, um Dateisystemänderungen zu überwachen. Die Limits können mit folgenden Befehlen erhöht werden:

Befehle:

Hinweis:
Diese Werte sind für große Systeme geeignet. Passe sie ggf. an deine Anforderungen an.


3. Limits für Docker-Container prüfen

Um die aktuellen Limits eines Docker-Containers zu prüfen, verwende folgenden Befehl:

Befehl:

Beispiel:

Damit siehst du alle aktuellen Limits im Container.


4. Limits für systemd-Dienste (z.B. Docker)

Damit systemd-Dienste (wie Docker) die neuen Limits nutzen, musst du ggf. die systemd-Unit anpassen:

Beispiel für Docker:

Damit wird das Limit für offene Dateien auch für den Docker-Daemon erhöht.


5. Zusammenfassung

  • Systemlimits erhöhen:
    • fs.file-max für offene Dateien
    • fs.inotify.max_user_watches und fs.inotify.max_user_instances für inotify
  • Limits prüfen:
    • ulimit -a im Container
  • systemd-Limits anpassen:
    • Drop-in-Datei für Docker oder andere Dienste
  • E-Mail-Versand testen:
    • Lokalen SMTP-Server wie MailHog verwenden

6. Beispielhafte Befehle