Перезагружать процесс, если тот насилует процессор?

Пытаюсь с помощью Monit'а ограничить аппетиты процесса. Если вдруг жрет CPU, то он бы перезагружался, но почему-то Monit его игнорирует и не перезапускает процесс.


Пробовал такие условия:

if totalcpu > 60% for 2 cycles then restart



if cpu usage > 60% for 2 cycles then restart



if cpu > 60% for 2 cycles then restart


и ни одна из конструкций не сработала.


ЧЯДНТ?


Может еще какие есть средства кроме монита или есть идеи?

У меня пока иссякли всякие.


PS: ОС Debian 6, платформа виртуализации OpenVZ
  • Вопрос задан
  • 3652 просмотра
Решения вопроса 1
skurudo
@skurudo Автор вопроса
Конструкции вида «if cpu > 60% for 2 cycles then restart» вполне себе рабочие и грешить на monit мне не стоило. Дело оказалось в том, что значение CPU внутри контейнера monit берет от общего и они совсем не похожи на то, что мы видим в top/htop.

Решение — поймать момент нестабильного поведения процесса и снять показания с помощью команды monit status.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
1. По хорошему надо отпрофилировать процесс, чтобы понять где затык и убрать САМУ причину таких граблей.
2. Настроить квоты на процесс и/или виртуалку, чтобы ему (процессу/виртуалке) не отдавалось 100% процессора/памяти/iops/iowait'а

Навскидку всё.
Ответ написан
stan_jeremy
@stan_jeremy
дебиана под рукой нет, но на убунте работает:

check process apache2 with pidfile /var/run/apache2.pid
if totalcpu > 60% for 2 cycles then restart

уверены что правильный процесс мониторите?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы