
tail: inotify cannot be used, reverting to polling: Too many open files
Ich verwende Apache- und Tomcat-Server auf Ubuntu (AWS ec2). Immer wenn ich versuche, catalina.out
Tomcat zu verfolgen, werden zu viele Dateien geöffnet. Ich kann sie jedoch mit vi anzeigen.
Nachdem ich im Internet gesucht hatte, habe ich den folgenden Befehl ausprobiert:
lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
Mit Ergebnissen unten
17 5650
17 5178
13 5972
10 5976
10 5974
9 5977
9 5975
9 5973
8 5978
4 9
Als ich gerade lsof ausgeführt habe, waren die Prozess-IDs: 5650 waren Bash, 5178 war wieder Bash und die anderen waren SSHD, Top und Apache2.
Warum gibt es so viele geöffnete Dateien von Bash, Top und SSHD? Wie kann ich diese Dateien schließen? Bringt es etwas, diese Prozesse zu beenden? Wird die Anzahl von selbst abnehmen oder muss ich etwas tun? Momentan funktioniert alles wie erwartet, außer dass tail -f mir zu viele geöffnete Dateien anzeigt.
Ich verwende Top und SSH häufig zum Server. Aber warum geben sie die Dateien nicht frei? ODER verbinde ich die falschen Punkte.
Antwort1
Wahrscheinlich sind Ihnen die Inotify-Uhren ausgegangen. Standardmäßig liegt der Wert bei absurd niedrigen 8192.
Überprüfen Sie Ihren aktuellen Wert durch:
sysctl fs.inotify.max_user_watches
Ändern Sie es dann in etwas Sinnvolleres, indem Sie /etc/sysctl.conf
eine darin enthaltene Datei bearbeiten und Folgendes hinzufügen:
fs.inotify.max_user_watches = 524288
(oder welcher Wert auch immer) und führen Sie es dann aus, sysctl -p
damit es wirksam wird.
Antwort2
Sie können versuchen, fs.inotify.max_user_instances zu erhöhen:
sysctl fs.inotify.max_user_instances=512
Antwort3
Vielleicht ist es ein Ubuntu-Kernel-Fehler, überprüfen SieDasvom Launchpad-Bugtracker.
Und aktualisieren Sie bei Bedarf Ihren Kernel!