Какие ресурсы использует 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