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.