Как автоматически перезапустить приложение для использования слишком большого количества оперативной памяти или процессора
Я собираюсь запустить сервер Ubuntu 14.04 LTS, на котором будут работать несколько серверов Garry Mod (Half-life 2/Source). Я не хочу, чтобы какой-либо из этих серверов выходил из строя, занимая слишком много ОЗУ или ЦП. Если какой-либо сервер использует более 1 гигабайта оперативной памяти или 100% одного ядра процессора, я бы хотел, чтобы он автоматически перезагружался. В дополнение к этому, есть ли способ автоматически перезапускать каждое из этих приложений ежедневно, скажем, в 12 часов?
Я очень новичок в написании сценариев bash и мало что знаю, но если бы кто-то мог хотя бы указать мне правильное направление, я был бы очень признателен.
1 ответ
Следите за этими демонами:
Monit - небольшая утилита для управления и мониторинга Unix-систем. Монит проводит автоматическое обслуживание и ремонт и может выполнять значимые причинно-следственные действия в ситуациях ошибки.
Например, apache использует слишком много ресурсов. Monit может остановить или перезапустить Apache и отправить вам сообщение с предупреждением [...]
Файлы конфигурации позволяют легко выразить то, что вы хотите естественным образом. Например, вы можете сделать что-то вроде:
check process spamd with pidfile /var/run/spamd.pid
group mail
start program = "/etc/init.d/spamd start"
stop program = "/etc/init.d/spamd stop"
if 5 restarts within 5 cycles then timeout
if cpu usage > 99% for 5 cycles then restart
if mem usage > 99% for 5 cycles then restart
Установить:
$ sudo apt-get install monit