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

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

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

3 ответа

Возможно, у вас закончились часы 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, проверьте это с помощью панели запуска bugtracker.

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

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