laravel怎么配置supervisor来守护队列worker进程_laravel supervisor队列worker守护配置

laravel怎么配置supervisor来守护队列worker进程_laravel supervisor队列worker守护配置
最新回答
伪友

2021-10-12 05:58:37

在 Laravel 中配置 Supervisor 来守护队列 worker 进程,可以确保队列任务持续稳定运行,避免因进程意外终止导致任务中断。以下是详细的配置步骤:

一、安装并配置 Supervisor

Supervisor 是一个基于 Python 的进程管理工具,用于监控 Laravel 队列 worker 进程的运行状态,并在进程停止时自动重启。

  1. 安装 Supervisor

    sudo apt install supervisor
  2. 启动并启用 Supervisor 服务

    sudo systemctl start supervisor && sudo systemctl enable supervisor
  3. 确认服务状态

    sudo systemctl status supervisor

    确保显示为 active (running)。

二、创建 Supervisor 配置文件

每个需要守护的 Laravel 队列 worker 应对应一个独立的 Supervisor 配置文件,便于管理和监控。

  1. 创建配置文件

    sudo nano /etc/supervisor/conf.d/laravel-worker.conf
  2. 填入以下内容

    [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=true

    command:指定 Laravel 队列 worker 的启动命令。

    autostart 和 autorestart:设置为 true 以确保进程自动启动和重启。

    user:指定运行进程的用户(通常为 www-data)。

    numprocs:指定启动的 worker 进程数量。

    stdout_logfile:指定日志文件路径。

  3. 保存并关闭文件

三、重载 Supervisor 配置并启动进程

修改配置后需重新加载 Supervisor 才能使新配置生效,并启动定义的 worker 进程组。

  1. 重新读取配置文件

    sudo supervisorctl reread
  2. 更新配置以应用更改

    sudo supervisorctl update
  3. 查看进程状态

    sudo supervisorctl status

    确认 laravel-worker 状态为 RUNNING。

四、监控日志与排查问题

Supervisor 会将标准输出写入指定日志文件,通过查看日志可快速定位队列执行中的异常。

  1. 实时查看日志输出

    tail -f /var/log/laravel-worker.log
  2. 检查日志内容

    查看是否存在 PHP 错误或任务超时提示。

    若发现频繁重启,应检查代码中是否存在未捕获的异常或数据库连接中断问题。

五、常见问题处理
  1. 进程未启动

    确认 command 路径是否正确。

    检查 user 是否有权限访问相关文件。

  2. 日志未生成

    确认 stdout_logfile 路径是否存在且可写。

    检查 Supervisor 配置中的 redirect_stderr 是否设置为 true。

  3. 进程频繁重启

    检查代码中是否存在未捕获的异常。

    确认数据库连接是否稳定。

通过以上步骤,您可以成功配置 Supervisor 来守护 Laravel 队列 worker 进程,确保队列任务持续稳定运行。