tail: inotify нельзя использовать, возвращаясь к опросу: слишком много открытых файлов

Когда я пытаюсь tail -f catalina.out, я получаю сообщение об ошибке:

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

Я попробовал ответ в этом посте: Слишком много открытых файлов - как найти виновника [ 119]

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 не получается?

16
задан 13 April 2017 в 15:23

6 ответов

Проверьте версию своего ядра, это может быть ошибка:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1101666

0
ответ дан 13 April 2017 в 15:23

Запустите

ps aux | grep tail

, чтобы проверить, слишком много ли запущено хвостовых команд, таких как spawn от crontab.

0
ответ дан 13 April 2017 в 15:23

Это было решено для меня, следуя инструкциям на http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html

Постоянное решение (сохраняется при перезапусках) Добавление строки:

fs.inotify.max_user_watches=1048576

к:

/etc/sysctl.conf

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

затем сделать

sysctl -p
0
ответ дан 13 April 2017 в 15:23

sysctl fs.inotify.max_user_instances получит лимит на пользователя для inotify.

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

0
ответ дан 13 April 2017 в 15:23

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

Существует два ограничения на максимальное количество открытых файлов:

  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
    • Подсчитать все дескрипторы открытых файлов: [ 115]
0
ответ дан 13 April 2017 в 15:23

Скорее всего, у вас закончились часы 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 -не может быть использован-возвращен-на-опрос слишком много открытых файлов

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: