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.
И при необходимости обновите ваше ядро!