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

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

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

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

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

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

int res = опрос (изд. GetPollData (), изд. 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