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

Программа перезапуска Monit config

У меня такая конфигурация монитора:

check process unicorn
with pidfile /tmp/pids/unicorn.0.pid
start program = "/etc/init.d/unicorn start"
stop program = "/etc/init.d/unicorn stop"
restart program = "/etc/init.d/unicorn reload"
if mem is greater than 250.0 MB for 2 cycles then restart
if cpu is greater than 22% for 3 cycles then alert
if cpu is greater than 25% for 2 cycles then restart

Но похоже, что всякий раз, когда monit пытается перезагрузить приложение (например, из-за памяти> 250 МБ), он выдает остановку, а затем запуск, вместо того, чтобы использовать программу перезапуска. Есть ли способ указать monit выполнить перезагрузку вместо этого? Так как выдача остановки и запуска приводит к тому, что сайт на какое-то время отключается.

Я вижу ту же проблему, о которой вы сообщили. Я не знаю, почему «программа перезапуска» не используется для перезапуска. Однако я использую обходной путь:

check process unicorn
with pidfile /tmp/pids/unicorn.0.pid
start program = "/etc/init.d/unicorn start"
stop program = "/etc/init.d/unicorn stop"
if mem is greater than 250.0 MB for 2 cycles then restart
if cpu is greater than 22% for 3 cycles then alert
if cpu is greater than 25% for 2 cycles then exec "/etc/init.d/unicorn reload"

Обратите внимание, что я оставил проверку if mem, чтобы она выполняла остановку / запуск. Это потому, что я предполагаю, что перезагрузка, вероятно, не поможет, если у вас есть утечка памяти, поэтому, вероятно, потребуется остановка / запуск. Но настройте, как считаете нужным.

Если не копаться в исходном коде monit и исправлять его (или устанавливать более новую версию и выяснять, исправлена ​​ли она), это, вероятно, ваш лучший вариант.

Какую версию monit вы используете?

синтаксис для перезапуска кажется допустимым

вы проверяли веб-интерфейс, чтобы убедиться, что конфигурация анализируется как обслуживаемая?

в документации говорится

RESTART перезапускает службу и отправляет предупреждение. Перезапуск выполняется путем вызова зарегистрированного метода перезапуска службы или сначала вызывая метод остановки, а затем метод запуска, если перезапуск не установлен.

Метод, который Monit использует для перезапуска, состоит в том, чтобы сначала выполнить программу остановки, затем подождать (до 30 с), пока процесс остановится, а затем выполнить программу запуска и подождать (30 с) ее запуска.