Что такое супервизор (supervisor) в контексте DevOps?

«Что такое супервизор (supervisor) в контексте DevOps?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Супервизор — это системный демон, который запускает, отслеживает и контролирует другие процессы (рабочие процессы, воркеры). Его основная задача — гарантировать, что критически важный процесс будет автоматически перезапущен в случае его падения или завершения. В PHP-проектах супервизор часто используется для управления фоновыми воркерами очередей (например, для Laravel Queues или Symfony Messenger).

Практический пример с Supervisor (пакет для Linux):

  1. Установка: sudo apt-get install supervisor
  2. Конфигурация воркера. Создаем файл /etc/supervisor/conf.d/laravel-worker.conf:
    [program:laravel-worker]
    process_name=%(program_name)s_%(process_num)02d
    command=php /var/www/html/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
    directory=/var/www/html
    autostart=true
    autorestart=true
    stopasgroup=true
    killasgroup=true
    user=www-data
    numprocs=8
    redirect_stderr=true
    stdout_logfile=/var/log/supervisor/laravel-worker.log
    stopwaitsecs=3600
    • numprocs=8 — запускает 8 процессов воркера для параллельной обработки.
    • autorestart=true — гарантирует автоматический перезапуск при завершении.
  3. Управление:

    # Перечитать конфигурацию и применить изменения
    sudo supervisorctl reread
    sudo supervisorctl update
    
    # Запустить все процессы
    sudo supervisorctl start all
    
    # Проверить статус
    sudo supervisorctl status

Альтернативы в PHP-мире: Для управления долгоживущими PHP-процессами также используются менеджеры процессов, встроенные в сами приложения, например, RoadRunner или Swoole, которые могут работать без внешнего супервизора, но часто сами требуют надзора со стороны systemd или Supervisor.