You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Elastic Beanstalk上Laravel Queue Worker异常停止求助

问题排查:AWS Elastic Beanstalk上Laravel Queue Worker服务反复重启失败

问题背景

使用AWS Elastic Beanstalk部署Laravel应用,通过systemd管理队列worker服务,配置文件如下:

08_queue_service_restart:
  command: "systemctl restart laravel_worker"
files: 
  /opt/elasticbeanstalk/tasks/taillogs.d/laravel-logs.conf: 
    content: /var/app/current/storage/logs/laravel.log
    group: root
    mode: "000755"
    owner: root
  /etc/systemd/system/laravel_worker.service:
    mode: "000755"
    owner: root
    group: root
    content: |
      # Laravel queue worker using systemd
      # ----------------------------------
      #
      # /lib/systemd/system/queue.service
      #
      # run this command to enable service:
      # systemctl enable queue.service

      [Unit]
      Description=Laravel queue worker

      [Service]
      User=nginx
      Group=nginx
      Restart=always
      ExecStart=/usr/bin/nohup /usr/bin/php /var/app/current/artisan queue:work --tries=3

      [Install]
      WantedBy=multi-user.target

今日凌晨开始,worker服务反复重启失败,错误日志如下:

Aug 17 04:21:34 ip-blabla systemd: laravel_worker.service: main process exited, code=exited, status=1/FAILURE
Aug 17 04:21:34 ip-blabla systemd: Unit laravel_worker.service entered failed state.
Aug 17 04:21:34 ip-blabla systemd: laravel_worker.service failed.
Aug 17 04:21:34 ip-blabla systemd: laravel_worker.service holdoff time over, scheduling restart.
Aug 17 04:21:34 ip-blabla systemd: Stopped Laravel queue worker.
Aug 17 04:21:34 ip-blabla systemd: Started Laravel queue worker.

重建Beanstalk环境后问题仍存在,以下是具体排查和修复步骤:


排查与修复步骤

1. 查看Laravel日志获取具体错误

systemd错误日志仅显示进程退出状态,无法定位根本问题,直接查看Laravel日志:

tail -f /var/app/current/storage/logs/laravel.log

重点关注worker启动时间点附近的报错,比如数据库连接失败、依赖缺失、缓存权限问题等。

2. 手动验证worker命令有效性

切换到nginx用户,模拟systemd执行环境直接启动worker:

su - nginx -c "/usr/bin/php /var/app/current/artisan queue:work --tries=3"

终端会直接输出命令执行的错误信息,是最快定位问题的方式。

另外,systemd本身会管理进程生命周期,无需nohup,建议去掉该命令,避免进程管理冲突。

3. 检查文件与目录权限

Laravel的storage目录需要nginx用户具备读写权限,否则worker无法生成日志、缓存文件:

chown -R nginx:nginx /var/app/current/storage
chmod -R 755 /var/app/current/storage

同时确认artisan文件有执行权限:

chmod +x /var/app/current/artisan

4. 确保systemd加载Laravel环境变量

systemd启动的进程默认不加载用户环境变量,而Laravel依赖.env中的配置(如数据库连接)。可在service配置中添加环境变量加载:
在[Service]段加入:

EnvironmentFile=/var/app/current/.env

或者通过bash命令加载环境变量后启动worker:

ExecStart=/bin/bash -c 'source /var/app/current/.env && /usr/bin/php /var/app/current/artisan queue:work --tries=3'

5. 优化systemd服务配置

修改后的完整service配置示例,添加日志输出便于排查:

# Laravel queue worker using systemd
[Unit]
Description=Laravel queue worker

[Service]
User=nginx
Group=nginx
Restart=always
# 加载Laravel环境变量
EnvironmentFile=/var/app/current/.env
# 去掉nohup,由systemd管理进程
ExecStart=/usr/bin/php /var/app/current/artisan queue:work --tries=3
# 将输出重定向到journalctl,方便查看详细日志
StandardOutput=journal+console
StandardError=journal+console

[Install]
WantedBy=multi-user.target

6. 更新Beanstalk部署配置

修改部署配置文件,确保systemd重新加载配置并启用服务:

08_queue_service_restart:
  command: |
    systemctl daemon-reload
    systemctl enable laravel_worker.service
    systemctl restart laravel_worker.service
files: 
  /opt/elasticbeanstalk/tasks/taillogs.d/laravel-logs.conf: 
    content: /var/app/current/storage/logs/laravel.log
    group: root
    mode: "000755"
    owner: root
  /etc/systemd/system/laravel_worker.service:
    mode: "000755"
    owner: root
    group: root
    content: |
      # Laravel queue worker using systemd
      [Unit]
      Description=Laravel queue worker

      [Service]
      User=nginx
      Group=nginx
      Restart=always
      EnvironmentFile=/var/app/current/.env
      ExecStart=/usr/bin/php /var/app/current/artisan queue:work --tries=3
      StandardOutput=journal+console
      StandardError=journal+console

      [Install]
      WantedBy=multi-user.target

验证修复结果

部署更新后的配置文件,查看systemd服务状态:

systemctl status laravel_worker.service

或实时查看journal日志:

journalctl -u laravel_worker.service -f

若服务稳定运行,则问题已解决。

内容的提问来源于stack exchange,提问作者Tufan Çağkan Sökmenn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:12:24