+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Автоматический перезапуск при зависании процессов

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Автоматический рестарт сервера при зависании

Бывает что сервер упал, и нету никого рядом чтобы его поднять. Особенно обидно, когда это ваш сервер, и никто кроме вас не может его перезагрузить.

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

Сервер может упасть ночью, когда вы спите, или вы можете находиться далеко от компьютера, и быть не в состоянии вовремя его перезагрузить, а во время простоя вам будут звонить на телефон недовольные клиенты.

Чтобы этого избежать, для Битрикс веб-окружения я использую дополнительную бесплатную прогу - monit, которая все это дело отслеживает, и легко настраивается через один конфигурационный файл.

Теоретически, все это может делать встроенный в BitrixEnv модуль Nagios, но он мне показался слишком сложным для освоения начинающим LInux-специалистом вроде меня.

Итак, ставим на ваш Centos прогу monit:
yum install monit 
После чего заходим в конфигурационный файл /etc/monit.conf и настраиваем в нем свои правила:

Указываем время одного цикла проверки - 60 секунд. То есть, каждые 60 секунд система будет делать проверку на соответствие тех или иных параметров.
# set daemon mode timeout to 1 minute
set daemon 60

Указываем почтовый ящик и почтовый сервер для уведомлений об алертах
set mailserver localhost
set alert my-email@gmail.com

Теперь настраиваем сами уведомления. На всякий случай - будем слать себе письма, если на протяжении последних 60-ти проверок (последнего часа) было занято более 80% дискового пространства на сервере:
check device maindisk with path /dev/xvda3
   if space usage > 80% for 5 times within 60 cycles then alert

Ну и конечно - настраиваем мониторинг сервера apache:
если нагрузка на процессор на протяжении последних двух минут составляла более 90% - отправляем себе письмо-алерт,
если на протяжении последних 5-ти минут нагрузка на процессор держится на уровне более 90% - то рестартуем апач
если средняя нагрузка на сервер (load average) за последние 5 минут больше трех - шлем алерт, если больше 5-ти - то рестартуем.
check process httpd with pidfile "/var/run/httpd/httpd.pid"
   start program = "/etc/init.d/httpd start"
   stop program = "/etc/init.d/httpd stop"
   if totalcpu > 90% for 2 cycles then alert
   if totalcpu > 90% for 5 cycles then restart
   if loadavg(5min) greater than 3 then alert
   if loadavg(5min) greater than 5 then restart
 
Обычно этого достаточно, чтобы побороть зависшие процессы (когда один процесс занимает 99% процессорного времени и не умирает). Кроме того, данное правило отслеживает, запущен ли процесс апач, и автоматически его запускает.

После установки правил - стартуем монит:
service monit start   
и добавляем его в автозагрузку:
chkconfig monit on  

Все, теперь можно наслаждаться автовосстановлением апача после падения. Например, вы можете написать в консоли:
service httpd stop
и наблюдать, как через минуту ваш сервер опять оживет.

Или можете попробовать создать на нем повышенную нагрзурку, и увидеть, как индеец рестартанется.

Вот ссылка на полный вариант конфига, в нем кроме описанного выше, есть системные комментарии и примеры для реализации более сложных проверок.

Конечно, это больше похоже на "Экстренную реанимацию", и если ночью зависание произошло - нужно, проснувшись утром, обязательно разобраться в проблемах (исследуя логи и данные программ для мониторинга), засесть за гугль, найти причину сбоя, и устанить её, а не надеяться что данная проблема сама по себе пройдет. Как правило, если сервер часто зависает - то чем далье, чем больше будут происходить подобные сбои и нужно искать причину, а не лечить последствия.

Так же, вы можете настроить автоматический бекап на удаленный сервер, и повысить стабильность работы вашей системы на Битрикс веб-окружении.

 

 

Источник: http://dev.1c-bitrix.ru/community/webdev/user/16182/blog/9606/

Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...