хвіст: inotify не можна використовувати, повертаючись до опитування: Забагато відкритих файлів


16

Коли я намагаюся tail -f catalina.out, я отримую помилку:

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

Я спробував відповідь у цій публікації: Забагато відкритих файлів - як знайти винуватця

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

Коли я запустив вищезгадану команду, результат був

17 6115

13 6413

10 6417

10 6415

9 6418

9 6416

9 6414

8 6419

4 9 

4 8

Я не бачу жодного процесу з відкриттям 1024 файлів. Чи не відкрито кількість файлів 17,13,10,10,9? Або я це неправильно розумію? І все це були bash, sshd, apache2, tomcat мали номер 4.

Я теж зробив, lsof | grep tail | wc -l що повернувся 20. Ці цифри не величезні, так чому це не tail -f catalina.outвдається?

Відповіді:


17

Це було вирішено для мене, дотримуючись інструкцій на веб-сайті http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html

Постійне рішення (зберігається через перезавантаження) Додавання рядка:

fs.inotify.max_user_watches=1048576

до:

/etc/sysctl.conf

фіксували граничне значення назавжди (навіть між перезавантаженнями).

то зробіть а

sysctl -p

1
Збільшення дескрипторів файлів мені не допомагає. Моє tailповідомлення було трохи інакше: tail: inotify resources exhausted. Ця відповідь мені допомогла. Ви також sudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -pможете перевірити, чи допомагає вона, не змінюючи її постійно. Цей пост також допомагає nefaria.com/2014/08/tail-inotify-resources-exhausted
— Руслан

9

Я вважаю, що відповідь не є повною (вона нічого не говорить про максимальний ліміт файлів, відкритих у системі).

Існує два обмеження щодо максимальної кількості відкритих файлів:

  1. Максимальний ліміт відкритих файлів за один процес .

    • Ви можете побачити, яке значення цього обмеження, використовуючи: ulimit -n
    • Ви можете змінити цей ліміт, використовуючи: ulimit -n new_limit_number
    • Ось команда, щоб відкрити топ-10 процесів із відкриттям багатьох файлів:

      lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
  2. Максимальний ліміт файлів, відкритих у кожній системі .

    • Ви можете побачити, яке значення цього обмеження, використовуючи: cat /proc/sys/fs/file-max
    • Ви можете змінити цей ліміт, використовуючи: echo new_limit_number > /proc/sys/fs/file-max
    • Підрахунок всіх ручок відкритого файлу: lsof | wc -l

6

Швидше за все, у вас закінчилися inotifyгодинники. Можливо, ви використовуєте деякі засоби синхронізації файлів (наприклад, Dropbox) у фоновому режимі?

У Linux внутрішня реалізація tail -fкоманди використовує inotifyмеханізм за замовчуванням, щоб контролювати зміни файлів. Якщо у вас закінчилися всі inotifyгодинники (8192 за замовчуванням), тоді inotify -fдоведеться перейти на опитування, щоб виявити зміни у цьому файлі.

Звичайно, ви можете змінити максимальну кількість inotifyгодин.

довідка:
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_instancesотримає ліміт на користувача для inotify.

Я відчував це, і всі обмеження системи були досить високими, але налаштування користувачем зазвичай за замовчуванням відносно низькі, ви можете збільшити його sysctl.confі перезавантажити нітрохи sysctl -p.


3

Біжи

ps aux | grep tail

щоб перевірити, чи працює занадто багато команд хвоста, наприклад, ікру за допомогою crontab.


га це насправді спрацювало, набравши занадто багато файлів
— Олександр Міллз

Як перекласти дані? Чи можете ви пояснити, що означає кожна інформація та що з цим робити? Наприклад:root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
— Крістен

Проблема полягає лише в тому випадку, якщо TOO MANY процеси збігаються, якщо відповідність рядків містить "grep", генерується самою командою. Будь ласка, використовуйте команду "pgrep tail".
— tangxinfa

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.