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, проверьте этот из багтрекера на стартовой панели.
А при необходимости обновите ядро!