Рубріки: HighloadТеория

Запуск процессов в supervisor

Игорь Грегорченко

Supervisor — это система клиент/сервер, при помощи которой пользователь (администратор) может контролировать подключенные процессы в системах типа UNIX. Инструмент создает процессы в виде под-процессов от своего имени, поэтому имеет полный контроль над ними.

Supervisor состоит из серверной части под названием supervisord, которая создает и управляет всеми процессами, и системного/веб-интерфейса supervisorctl для управления и мониторинга supervisord.

Установка и настройка supervisor

Процесс установки supervisord в Debian предельно прост. Нужно выполнить команду:

apt-get install supervisor

Установка supervisor, необходимо иметь права root

После установки, supervisor нужно сконфигурировать и добавить программы/процессы, которыми он будет управлять. Файл конфигурации по умолчанию находится в /etc/supervisor/supervisord.conf (для Ubuntu, Debian) или /etc/supervisord.conf для других систем(FreeBSD и т.д.).

Для добавления нового процесса (воркера) нужно дополнить файл аналогичным кодом:

[program:worker]

command=/usr/bin/php /var/www/worker.php
stdout_logfile=/var/log/worker.log
autostart=true
autorestart=true
user=www-data
stopsignal=KILL
numprocs=1

Создание воркера для управления процессом PHP

Кратко пройдемся по параметрам

  • [program:worker] — название процесса/воркера, к которому будут относиться все последующие параметры секции;
  • command=/usr/bin/php /var/www/worker.php — команда на запуск файла, то есть путь к нужному файлу;
  • stdout_logfile=/var/log/worker.log — вывод консоли в файл;
  • autostart=true — запуск воркера вместе с запуском supervisor;
  • autorestart=true — перезапуск воркера, если тот по какой-то причине упал;
  • user=www-data — запуск процесса под определенным пользователем;
  • stopsignal=KILL — сигнал остановки (убийства) процесса. Если не определяется, то используется команда по умолчанию — TERM</var>;
  • numprocs=1 — количество инстансов заданного воркера.

В случае, когда требуется запуск сразу нескольких инстансов одного и того же процесса, конфигурация будет иметь вид:

[program:worker]

command=/usr/bin/php /var/www/worker.php
process_name=%(program_name)s_%(process_num)02d
numprocs=10
stdout_logfile=/var/log/worker.log
autostart=true
autorestart=true
user=www-data
stopsignal=KILL

Создание 10 копий процесса

В этом случае добавляется строчка process_name=%(program_name)s_%(process_num)02d, которая задает имена всех копий процесса, в нашем случае worker_00, worker_01 и т.д.

После добавления новых процессов/воркеров не забывайте перезагружать supervisor:

/etc/init.d/supervisor restart

Перезапуск супервизора

Supervisor также включает пользовательский веб-интерфейс supervisorctl, который включается при помощи файла конфигурации. Для этого нужно изменить секцию [inet_http_server], вписав туда верные имя пользователя и пароль:

[inet_http_server]

port=127.0.0.1:9001
;username=some_user_name
;password=some_password

Включение веб-консоли supervisorctl на 9001-м сокете

Теперь всеми доступными процессами можно управлять через браузер. Помните, что после изменения конфига supervisor и/или supervisorctl нужно обновить.

Дополнительные возможности

В supervisor есть встроенный механизм мониторинга событий, при помощи которого система может оповещать об ошибках:

[eventlistener:memmon]

command=memmon -a 200MB -m error@ruhighload.com
events=TICK_60

Если процесс потребляет более 200 МБ памяти, memmon перезапускает его и отправляет уведомление на почту, проверка каждые 60 секунд

При помощи ивентов и собственного скрипта на Pyton можно произвести проверку буквально любого аспекта нужного процесса.

Самое главное

Supervisor — простой и достаточно мощный инструмент для контроля процессов. С правильной настройкой он способен обеспечить бесперебойную работу вашего веб-сервиса.

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

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023