Какие ресурсы использует incrond? Что может заставить его остановиться?

Incrontab настроен для мониторинга ок. 10 каталогов. Единственное, что он делает, - это запускает скрипт Bash, когда новый файл поступает в один из этих каталогов. Приблизительно один файл принимается каждые 5 минут в каждом из папок. Однако incrond иногда останавливается. Нет правила, когда это произойдет. Он варьируется от нескольких раз в неделю до нескольких раз в месяц. Ошибка, которая регистрируется:

incrond[35203]: *** unhandled exception occurred ***
incrond[35203]:   polling failed
incrond[35203]:   error: (11) Resource temporarily unavailable
incrond[35203]: stopping service

Я знаю, что я не опубликовал много информации. Однако система закрыта, поэтому я поделился тем, что мог. Я не ищу прямой ответ (так как вопрос может быть слишком широким). Я ищу идеи, которые я могу исследовать. Что может быть причиной такого поведения? Какие вещи я должен проверить? Какие ресурсы я должен проверить?

2 ответа

incrond использует уровень ядра inotify подсистема, инкапсулирующая inotify Интерфейс на основе C в контейнере C++. Если посмотреть на исходные файлы incrond, кажется, что ошибка, с которой вы сталкиваетесь, связана с ошибочным опросом дескриптора файла, инкапсулированного в incrond C++ класс:

int res = poll (ed.GetPollData (), ed.GetSize (), -1);

if (res > 0) { ed.ProcessEvents(); } else if (res < 0) { switch (errno) { case EINTR: // syscall interrupted - continue polling break; case EAGAIN: // not enough resources - wait a moment and try again syslog(LOG_WARNING, "polling failed due to resource shortage, retrying later..."); sleep(POLL_EAGAIN_WAIT); break; default: throw InotifyException("polling failed", errno, NULL); } }

Трудно определить точную причину неудачного опроса. Наиболее распространенными причинами могут быть:

  • перегруженная система
  • авария / сегментация некоторых incrond функции

В любом случае, сколько файлов существует в ваших контролируемых каталогах?

Использование strace введите команду для входа в файл и установите для файла журнала поворот в зависимости от того, как часто вы замечаете, что произошел сбой.

Например, если вам потребуется неделя, чтобы обнаружить, что произошел сбой, ротация журнала должна быть сохранена в течение 7 дней (или более). Если вы в целом знаете в течение часа, то достаточно 6–10 часов чередующихся почасовых журналов.

Подробнее об этом и примеры: http://www.thegeekstuff.com/2011/11/strace-examples

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