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

tail: inotify не может быть использован, возвращается к опросу: слишком много открытых файлов
tail: inotify cannot be used, reverting to polling: Too many open files

Я запускаю серверы apache и tomcat на Ubuntu (AWS ec2). Всякий раз, когда я пытаюсь отслеживать catalina.outtomcat, я получаю слишком много открытых файлов. Однако я могу просматривать их с помощью vi.

После поиска в интернете я попробовал следующую команду:

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

С результатами ниже

 17 5650
 17 5178
 13 5972
 10 5976
 10 5974
  9 5977
  9 5975
  9 5973
  8 5978
  4 9

Когда я только что запустил lsof, идентификаторы процессов: 5650 были bash, 5178 снова был bash, а остальные были sshd,top и apache2.

Почему bash, top, sshd открывают огромное количество файлов? Как мне закрыть эти файлы? Будет ли польза от завершения этих процессов? Уменьшится ли их количество само по себе или мне нужно что-то сделать? Сейчас все работает как и ожидалось, за исключением того, что tail -f открывает слишком много файлов.

Я часто использую top и ssh для сервера. Но почему они не выпускают файлы? ИЛИ я соединяю не те точки.

решение1

Вероятно, у вас закончились часы inotify. По умолчанию это абсурдно низкий 8192.

Проверьте текущее значение следующим образом:

sysctl fs.inotify.max_user_watches

Затем измените его на что-то более разумное, отредактировав /etc/sysctl.confфайл, который он включает, и добавив:

fs.inotify.max_user_watches = 524288

(или любое другое значение) и затем запустить его, sysctl -pчтобы он вступил в силу.

решение2

Вы можете попробовать увеличить fs.inotify.max_user_instances:

sysctl fs.inotify.max_user_instances=512

решение3

Может быть, это ошибка ядра Ubuntu, проверьтеэтотиз багтрекера launchpad.

И при необходимости обновите ядро!

Связанный контент