2021-10-12 05:58:37
在 Laravel 中配置 Supervisor 来守护队列 worker 进程,可以确保队列任务持续稳定运行,避免因进程意外终止导致任务中断。以下是详细的配置步骤:
一、安装并配置 SupervisorSupervisor 是一个基于 Python 的进程管理工具,用于监控 Laravel 队列 worker 进程的运行状态,并在进程停止时自动重启。
安装 Supervisor:
sudo apt install supervisor启动并启用 Supervisor 服务:
sudo systemctl start supervisor && sudo systemctl enable supervisor确认服务状态:
sudo systemctl status supervisor确保显示为 active (running)。
每个需要守护的 Laravel 队列 worker 应对应一个独立的 Supervisor 配置文件,便于管理和监控。
创建配置文件:
sudo nano /etc/supervisor/conf.d/laravel-worker.conf填入以下内容:
[program:laravel-worker]process_name=%(program_name)s_%(process_num)02dcommand=php /var/www/html/artisan queue:work --sleep=3 --tries=3autostart=trueautorestart=trueuser=www-datanumprocs=4redirect_stderr=truestdout_logfile=/var/log/laravel-worker.logstopwaitsecs=3600killasgroup=truestopasgroup=truecommand:指定 Laravel 队列 worker 的启动命令。
autostart 和 autorestart:设置为 true 以确保进程自动启动和重启。
user:指定运行进程的用户(通常为 www-data)。
numprocs:指定启动的 worker 进程数量。
stdout_logfile:指定日志文件路径。
保存并关闭文件。
修改配置后需重新加载 Supervisor 才能使新配置生效,并启动定义的 worker 进程组。
重新读取配置文件:
sudo supervisorctl reread更新配置以应用更改:
sudo supervisorctl update查看进程状态:
sudo supervisorctl status确认 laravel-worker 状态为 RUNNING。
Supervisor 会将标准输出写入指定日志文件,通过查看日志可快速定位队列执行中的异常。
实时查看日志输出:
tail -f /var/log/laravel-worker.log检查日志内容:
查看是否存在 PHP 错误或任务超时提示。
若发现频繁重启,应检查代码中是否存在未捕获的异常或数据库连接中断问题。
进程未启动:
确认 command 路径是否正确。
检查 user 是否有权限访问相关文件。
日志未生成:
确认 stdout_logfile 路径是否存在且可写。
检查 Supervisor 配置中的 redirect_stderr 是否设置为 true。
进程频繁重启:
检查代码中是否存在未捕获的异常。
确认数据库连接是否稳定。
通过以上步骤,您可以成功配置 Supervisor 来守护 Laravel 队列 worker 进程,确保队列任务持续稳定运行。