Назад | Перейти на главную страницу

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

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

Я использую серверы apache и tomcat на Ubuntu (AWS ec2). Всякий раз, когда я пытаюсь следить за catalina.out of tomcat у меня слишком много открытых файлов. Однако я могу просмотреть это с помощью 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 для сервера. Но почему они не выпускают файлы? ИЛИ я неправильно соединяю точки.

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

Проверьте свое текущее значение:

sysctl fs.inotify.max_user_watches

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

fs.inotify.max_user_watches = 524288

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

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

sysctl fs.inotify.max_user_instances=512

Может это ошибка ядра Ubuntu, проверьте этот из багтрекера на стартовой панели.

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