tail: nie można użyć inotify, powrót do odpytywania: zbyt wiele otwartych plików


16

Gdy próbuję tail -f catalina.out, pojawia się błąd:

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

Próbowałem odpowiedzieć w tym poście: Zbyt wiele otwartych plików - jak znaleźć winowajcę

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

Kiedy uruchomiłem powyższe polecenie, dane wyjściowe były

17 6115

13 6413

10 6417

10 6415

9 6418

9 6416

9 6414

8 6419

4 9 

4 8

Nie widzę żadnego procesu z otwartymi plikami 1024. Czy liczba plików nie jest otwarta 17 133, 10, 10,9? A może źle to rozumiem? A wszystko to były bash, sshd, apache2, tomcat miał numer 4.

Zrobiłem też, lsof | grep tail | wc -l co wróciło 20. Te liczby nie są ogromne, więc dlaczego tail -f catalina.outzawodzi?

Odpowiedzi:


17

Zostało to dla mnie rozwiązane, postępując zgodnie z instrukcjami na http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html

Stałe rozwiązanie (zachowane między restartami) Dodawanie linii:

fs.inotify.max_user_watches=1048576

do:

/etc/sysctl.conf

naprawiono wartość graniczną na stałe (nawet między restartami).

następnie zrób

sysctl -p

1
Zwiększanie deskryptorów plików mi nie pomaga. Moja tailwiadomość była nieco inna: tail: inotify resources exhausted. Ta odpowiedź pomogła mi. Możesz także użyć sudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -pdo sprawdzenia, czy to pomaga bez trwałej modyfikacji. Ten post pomaga również nefaria.com/2014/08/tail-inotify-resources-exhausted
Ruslan Stelmachenko

9

Myślę, że odpowiedź nie jest kompletna (nie mówi nic o maksymalnym limicie plików otwartych w systemie).

Istnieją dwa ograniczenia dotyczące maksymalnej liczby otwartych plików:

  1. Maksymalny limit plików otwartych na proces .

    • Możesz sprawdzić, jaka jest wartość tego limitu, używając: ulimit -n
    • Możesz zmienić ten limit, używając: ulimit -n new_limit_number
    • Oto polecenie, aby uzyskać 10 najlepszych procesów, w których otwartych jest wiele plików:

      lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
  2. Maksymalny limit plików otwartych na system .

    • Możesz sprawdzić, jaka jest wartość tego limitu, używając: cat /proc/sys/fs/file-max
    • Możesz zmienić ten limit, używając: echo new_limit_number > /proc/sys/fs/file-max
    • Policz wszystkie otwarte uchwyty plików: lsof | wc -l

6

Najprawdopodobniej zabrakło ci inotifyzegarków. Prawdopodobnie korzystasz z niektórych narzędzi do synchronizacji plików (np. Dropbox) w tle?

W Linuksie wewnętrzna implementacja tail -fpolecenia inotifydomyślnie korzysta z mechanizmu, aby monitorować zmiany plików. Jeśli zabrakło Ci wszystkich inotifyzegarków (domyślnie 8192), inotify -fmusisz przełączyć się na odpytywanie, aby wykryć zmiany w tym pliku.

Oczywiście możesz zmodyfikować maksymalną liczbę inotifyzegarków.

odniesienie:
http://www.quora.com/How-is-tail-f-implemented
http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html
https: // serverfault.com/questions/510708/tail-inotify-cannot-be-used-reverting-to-polling-too-many-open-files


3

sysctl fs.inotify.max_user_instancesuzyskałby limit na użytkownika dla inotify.

Doświadczyłem tego i wszystkie granice systemu były wystarczająco wysokie, ale ustawienie przez użytkownika jest zwykle stosunkowo niskie, domyślnie możesz je zwiększyć sysctl.confi ponownie załadować odrobiną sysctl -p.


3

Biegać

ps aux | grep tail

aby sprawdzić, czy uruchomiono zbyt wiele poleceń ogona, takich jak spawn przez crontab.


ha to faktycznie działało, dostosowując zdecydowanie za dużo plików
Alexander Mills,

Jak przetłumaczyć dane? Czy możesz wyjaśnić, co oznacza każda informacja i co z nią zrobić? Na przykład:root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
Christia,

Jest to problem tylko wtedy, gdy zbyt wiele dopasowanych procesów, dopasowana linia zawiera „grep” jest generowana przez samą komendę. Zamiast tego użyj polecenia „pgrep tail”.
tangxinfa

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.