GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kernel-Inotify-Überwachungslimit erreicht

Ist es sicher, diesen Wert zu erhöhen, und was wären die Folgen eines zu hohen Werts?

Ja, es ist sicher, diesen Wert zu erhöhen, und unten sind die möglichen Kosten aufgeführt [Quelle]:

  • Jeder gebraucht inotify watch benötigt 540 Bytes (32-Bit-System) oder 1 kB (Double - auf 64-Bit) [Quellen:1, 2]
  • Dies kommt aus dem Kernelspeicher , die nicht austauschbar ist.
  • Angenommen, Sie setzen das Maximum auf 524288 und alle wurden verwendet (unwahrscheinlich), würden Sie ungefähr 256 MB/512 MB 32-Bit-/64-Bit-Kernelspeicher verwenden.
    • Beachten Sie, dass Ihre Anwendung auch zusätzlichen Speicher benötigt, um die Inotify-Handles, Datei-/Verzeichnispfade usw. zu verfolgen – wie viel hängt von ihrem Design ab.

So überprüfen Sie die maximale Anzahl an Inotify-Überwachungen:

cat /proc/sys/fs/inotify/max_user_watches

So stellen Sie die maximale Anzahl von Inotify-Überwachungen ein

Vorübergehend:

  • Führen Sie sudo sysctl fs.inotify.max_user_watches= aus mit Ihrem bevorzugten Wert am Ende.

Dauerhaft (nähere Infos):

  • geben Sie fs.inotify.max_user_watches=524288 ein in Ihre Sysctl-Einstellungen. Abhängig von Ihrem System können sie sich an einem der folgenden Orte befinden:
    • Debian/RedHat:/etc/sysctl.conf
    • Arch:lege eine neue Datei in /etc/sysctl.d/ , z.B. /etc/sysctl.d/40-max-user-watches.conf
  • Möglicherweise möchten Sie die sysctl-Einstellungen neu laden, um einen Neustart zu vermeiden:sysctl -p (Debian/RedHat) oder sysctl --system (Bogen)

Überprüfen Sie, ob die maximale Anzahl an Inotify-Überwachungen erreicht wurde:

Verwenden Sie tail mit dem -f (Folgen)-Option für eine beliebige alte Datei, z. tail -f /var/log/dmesg :- Wenn alles in Ordnung ist, werden die letzten 10 Zeilen angezeigt und eine Pause eingelegt; Abbrechen mit Strg-C- Wenn Sie keine Uhren mehr haben , wird es mit diesem etwas kryptischen Fehler fehlschlagen:

tail: cannot watch '/var/log/dmsg': No space left on device

Um zu sehen, was Inotify-Uhren verbraucht

find /proc/*/fd -lname anon_inode:inotify |
   cut -d/ -f3 |
   xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}' |
   uniq -c |
   sort -nr

Die erste Spalte zeigt die Anzahl der inotify fds (allerdings nicht die Anzahl der Watches) und die zweite zeigt die PID dieses Prozesses [Quellen:1, 2].


Linux
  1. Makrokernel ausrichten

  2. Kernel-Hacking-Umgebung

  3. Beschreibung der Kernel.printk-Werte

  4. Was ist Kernel-IP-Weiterleitung?

  5. Deaktivieren Sie transparente Hugepages

Linux Watch-Befehl

Dmesg-Befehl unter Linux

Sysctl-Befehl unter Linux

Ist Linux ein Betriebssystem oder ein Kernel?

Linux-Kernel vs. Mac-Kernel

Verwenden des Watch-Befehls unter Linux