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

Ubuntu环境下Laravel队列Supervisor运行但不处理任务求助

解决Laravel SQS队列任务堆积未处理问题

1. 修复Supervisor配置的致命语法错误

你的queue-worker.conf里的command行末尾存在无效的-->(这是HTML转义残留的错误字符),会导致Worker进程无法正常初始化——哪怕Supervisor显示进程RUNNING,实际Worker并没有在消费任务。

修改后的正确配置示例(可根据需求调整超时等参数):

process_name=%(program_name)s_%(process_num)02d
command=php /var/www/site/artisan queue:work sqs --sleep=3 --tries=3 --timeout=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/site/storage/logs/worker.log
stopwaitsecs=3600

修改后执行以下命令重启Supervisor进程:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl restart queue-worker:*

2. 查看Worker日志定位具体问题

直接查看Worker日志的实时输出,获取错误细节:

tail -f /var/www/site/storage/logs/worker.log

常见错误原因包括:

  • SQS连接失败(AWS密钥/区域/队列名称配置错误)
  • 任务类找不到(命名空间错误或类文件缺失)
  • 权限不足(无法写入日志或读取配置文件)

3. 手动测试队列命令排除Supervisor影响

直接在服务器上运行Worker命令,验证队列本身是否能正常工作:

cd /var/www/site && php artisan queue:work sqs --sleep=3 --tries=3 --verbose

如果手动运行也无响应,检查以下几点:

  • 确认.env文件中的SQS配置(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION、SQS_QUEUE)与实际SQS队列完全匹配
  • 检查jobs表的queue字段,确认任务所在队列与Worker监听的队列一致(未指定--queue参数时,Worker默认监听default队列)
  • 查看failed_jobs表,确认是否有任务被标记为失败,或任务的available_at字段是否晚于当前时间(延迟任务)

4. 验证Laravel目录权限

即使使用root用户运行,仍需确保核心目录有读写权限:

chown -R root:root /var/www/site/storage /var/www/site/bootstrap/cache
chmod -R 755 /var/www/site/storage /var/www/site/bootstrap/cache

内容的提问来源于stack exchange,提问作者Parsa Haghighi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:40:59