Я пытаюсь запустить программу (Resque), но для написания pid-файла требуется немного времени. Таким образом, я думаю, что Monit считает, что программа не запустилась и запускает еще одну или две программы до того, как будет написан pid-файл первого.
Как мне отложить время проверки Monit снова, только для этого процесса? Или я должен решить это по-другому?
Ответы:
Как мне отложить время проверки Monit снова, только для этого процесса?
То, чего вы пытаетесь достичь, можно сделать с помощью функции monit « SERVICE POLL TIME »
В документации Monit говорится
Один из способов настроить опрос
КАЖДЫЙ [номер] ЦИКЛОВ
Пример:
Или я должен решить это по-другому?
Я также предпринял первоначальную попытку мониторинга заданий восстановления с помощью monit, потому что monit - это очень легкий демон, но в конечном итоге он установился с GOD. Я знаю, я знаю, что GOD более требователен к ресурсам по сравнению с monit, но в случае resque мы нашли, что это хорошее совпадение.
источник
Вы можете проверить конкретный сервис с другим интервалом, чем по умолчанию ...
См. ВРЕМЯ ОБСЛУЖИВАНИЯ ОБСЛУЖИВАНИЯ в документации Monit.
Примером вашей программы Resque может быть проверка на различное количество циклов:
или из раздела примеров:
или вы можете использовать проверки в стиле cron.
или если у вас медленный запуск, вы можете продлить тайм-аут в команде запуска службы:
источник
with timeout 90 seconds
было именно то, что я хотел. Благодарю.Вы также можете проверить, что-то не получилось X раз подряд:
Или для X раз в Y опросах:
Или оба:
( отсюда )
источник
Член моей команды придумал довольно умное решение, которое позволяет monit проверять часто (каждую минуту) , но как только он попытается перезапустить службу (что занимает ~ 10 минут), он будет ждать указанный льготный период, прежде чем попытаться запустить опять таки.
Это предотвращает слишком долгое ожидание между проверками, что в сочетании с медленным запуском оказывает гораздо большее влияние на клиентов. Он работает, используя промежуточный скрипт, который действует как флаг, чтобы указать, что monit уже предпринимает действия после последнего сбоя.
Если бамбук (веб-приложение с медленным запуском) не работает 3 минуты подряд, перезапустите, НО только если скрипт перезапуска еще не запущен.
У вызываемого скрипта есть заданный спящий режим, который ждет Дольше, чем самое медленное время запуска сервиса (в нашем случае мы ожидаем, что он завершится через ~ 10, поэтому мы спим в течение 15)
источник
Текущая версия Monit (5.16) поддерживает тайм-аут для стартовых скриптов с синтаксисом:
В документах заявляют:
Что и будет делать значение "timeout".
источник
timeout
должно применяться как к пуску, так и к перезапуску. Насколько я понимаю, он устанавливает задержку перед тем, как Monit проверит, что он: a) работает, b) создан ожидаемый файл PID и c) выполняется процесс с ожидаемым PID. У меня были некоторые проблемы, заставляющие его работать, где указанное приложение было просто сценарием, который разветвлял реальный процесс, а затем возвращался, не зная, что происходит с процессом. Заставить его работать в этом случае было больно.START DELAY
.