tail: inotify kann nicht verwendet werden, um zu polling zurückzukehren: Zu viele offene Dateien

9

Wenn ich tail -f catalina.out versuche, bekomme ich den Fehler:

tail: inotify cannot be used, reverting to polling: Too many open files 

Ich habe die Antwort in diesem Post versucht: Zu viele offene Dateien - wie man den Schuldigen findet

lsof | awk '{ print ; }' | sort -rn | uniq -c | sort -rn | head

Wenn ich den obigen Befehl ausgeführt habe, war die Ausgabe

17 6115

13 6413

10 6417

10 6415

9 6418

9 6416

9 6414

8 6419

4 9 

4 8

Ich sehe keinen Prozess, bei dem 1024 Dateien geöffnet sind. Ist die Anzahl der geöffneten Dateien nicht 17,13,10,10,9? Oder verstehe ich es falsch? Und all das waren Bash, Sshd, Apache2, Tomcat hatte Nummer 4.

Ich habe auch lsof | grep tail | wc -l was 20 zurückgegeben hat. Diese Zahlen sind nicht groß, warum also tail -f catalina.out fehlschlägt?

    
gbag 24.05.2013, 23:56

6 Antworten

11

Dies wurde für mich gelöst, indem Sie den Anweisungen auf dem Link folgen

Permanente Lösung (wird bei Neustarts beibehalten) Zeile hinzufügen:

fs.inotify.max_user_watches=1048576

zu:

/etc/sysctl.conf

hat den Grenzwert dauerhaft fixiert (auch zwischen Neustarts).

mach dann ein

sysctl -p
    
Elan Hasson 06.10.2016 22:56
9

Ich denke, diese Antwort ist nicht vollständig (sie sagt nichts über die maximale Anzahl von Dateien aus, die auf der Website geöffnet sind System).

Es gibt zwei Grenzen bezüglich der maximalen Anzahl von offenen Dateien:

  1. Maximale Anzahl der geöffneten Dateien pro Prozess .

    • Sie können sehen, welcher Wert dieses Limit verwendet: ulimit -n
    • Sie können dieses Limit ändern mit: ulimit -n new_limit_number
    • Hier ist ein Befehl, um die Top-10-Prozesse mit vielen Dateien zu öffnen:

      lsof | awk '{ print ; }' | sort -rn | uniq -c | sort -rn | head
      
  2. Maximale Anzahl der geöffneten Dateien pro System .

    • Sie können sehen, welcher Wert dieses Limit verwendet: cat /proc/sys/fs/file-max
    • Sie können dieses Limit ändern mit: echo new_limit_number > /proc/sys/fs/file-max
    • Zählen Sie alle geöffneten Dateizugriffsnummern: lsof | wc -l
Radu Rădeanu 20.09.2013 14:10
6

Wahrscheinlich haben Sie Ihre inotify -Uhren nicht mehr verwendet. Wahrscheinlich führen Sie einige Dateisynchronisationswerkzeuge (zB Dropbox) im Hintergrund aus?

In Linux verwendet die interne Implementierung des Befehls tail -f standardmäßig den Mechanismus inotify , um Dateiänderungen zu überwachen. Wenn Sie alle inotify -Uhren (standardmäßig 8192) nicht mehr verwenden, müssen Sie inotify -f auf Abfragen umschalten, um Änderungen an dieser Datei zu erkennen.

Natürlich können Sie die maximale Anzahl von inotify Uhren ändern.

Referenz:
Link
Link
link

    
zeekvfu 04.12.2013 16:42
3

sysctl fs.inotify.max_user_instances würde pro Benutzer für inotify ein Limit erhalten.

Ich habe es erlebt, und alle Limit-Systeme waren hoch genug, aber die Einstellung nach Benutzer ist normalerweise relativ niedrig, du kannst es in sysctl.conf erhöhen und es mit sysctl -p neu laden.

    
JBat 12.03.2016 18:08
2

Ausführen

ps aux | grep tail

, um zu überprüfen, ob zu viele Tail-Befehle ausgeführt werden, z. B. ein Spawn von crontab.

    
tangxinfa 13.12.2016 07:31
0

Überprüfen Sie Ihre Kernel-Version, es könnte dieser Fehler sein:

Link

    
thom 24.11.2013 04:43

Tags und Links