- Опубликовано: 27 фев 2025
- 317
Очереди в Laravel на продакшн-сервере: настройка и мониторинг
Очереди в Laravel позволяют выполнять задачи асинхронно, разгружая основной процесс приложения. Это особенно полезно для отправки email, генерации отчетов, обработки изображений и других длительных операций. В этой статье разберем, как правильно запустить и мониторить очередь на продакшн-сервере.
Кто запускает artisan queue:work
на сервере?
Вручную запускать php artisan queue:work
на продакшн-сервере — не лучший вариант, потому что процесс завершится при разрыве SSH-соединения или перезагрузке сервера. Вместо этого, для управления воркером используется Supervisor — процесс-менеджер, который следит за выполнением команд и автоматически перезапускает их при сбое.
Настройка Supervisor для очередей Laravel
1. Установка Supervisor
На большинстве серверов Linux Supervisor можно установить так:
sudo apt update && sudo apt install supervisor -y
После установки Supervisor должен автоматически запуститься. Если нет, включаем его вручную:
sudo systemctl enable --now supervisor
2. Создание конфигурации для воркера
Открываем файл конфигурации:
sudo nano /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 --tries=3
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
numprocs=1
redirect_stderr=true
stdout_logfile=/var/log/laravel-worker.log
Объяснение параметров:
-
command
– запускает воркер Laravel. -
autostart=true
– запускает процесс при старте Supervisor. -
autorestart=true
– перезапускает воркер при сбое. -
numprocs=1
– количество воркеров (можно увеличить для нагрузки). -
stdout_logfile
– путь к файлу логов. Сохраняем и закрываем файл (Ctrl + X
, затемY
иEnter
).
3. Применение настроек и запуск воркера
Теперь Supervisor нужно перечитать конфигурацию и обновить список процессов:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker
Проверяем статус воркера:
sudo supervisorctl status
Если всё работает, должно появиться:
laravel-worker:laravel-worker_00 RUNNING pid 12345, uptime 0:01:10
Как убедиться, что воркер работает?
1. Проверка логов
Если задачи не обрабатываются, сначала проверяем логи Laravel:
tail -f storage/logs/laravel.log
Или лог воркера Supervisor:
tail -f /var/log/laravel-worker.log
2. Проверка незавершенных задач
Можно посмотреть список задач, которые зависли:
php artisan queue:failed
Если там есть ошибки, попробуй повторно запустить их:
php artisan queue:retry all
3. Перезапуск воркера после обновления кода
После деплоя кода воркер может продолжать работать со старой версией. Чтобы он корректно обновился, выполните команду:
php artisan queue:restart
Эта команда отправляет сигнал воркерам завершить текущие задачи и автоматически перезапуститься.
Заключение
Теперь ты знаешь, как правильно запускать и мониторить очереди в Laravel на продакшн-сервере. Использование Supervisor позволяет гарантировать стабильную работу воркеров и их автоматический перезапуск при сбоях. Не забывай проверять логи и статус очереди, чтобы оперативно реагировать на возможные ошибки.
Была статья полезной: