laravel queue(队列) jobs(任务类) 抛出异常错误导致Supervisor(守护进程)停止,如何解决?

这个是配置

[program:redis-laravel]
command=php artisan queue:work redis --sleep=3 --tries=1 --timeout=30 --queue=high,default,low
directory=/www/wwwroot/laravel
autorestart=true
startsecs=3
startretries=3
stdout_logfile=/www/server/panel/plugin/supervisor/log/out.log
stderr_logfile=/www/server/panel/plugin/supervisor/log/err.log
stdout_logfile_maxbytes=2MB
stderr_logfile_maxbytes=2MB
user=root
priority=999
numprocs=1
process_name=%(program_name)s_%(process_num)02d

有时候数据库连接不上,导致 jobs会抛出大量异常,按理,有守护进程自动重启,队列会一直处理,为什么直接导致Supervisor停止呢?

该如何处理呢?

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 5
╰ゝSakura

startretries=3 stdout_logfile=/www/server/panel/plugin/supervisor/log/out.log stderr_logfile=/www/server/panel/plugin/supervisor/log/err.log

看下上面配置,重试启动次数3,是不是超过重试启动次数了,看下上面的日志输出
2年前 评论
  • command=php artisan queue:work redis --sleep=3 --tries=1 --timeout=30 --queue=high,default,low这一句tries=1指定了重试次数1
  • startretries=3这个指定了supervisor启动失败自动重试3次

异常可以在job里捕获一下,记个日志

2年前 评论

startretries配置已经取消,但是问题依然出现。而command=php artisan queue:work redis --sleep=3 --tries=1。这里 --tries=1. 应该是对laravel队列生效,应该不影响Supervisor吧。

2年前 评论
神的孩子丶都在跳舞 2年前

问题解决了. 开一个进程来单独消费这个队列就好了.隔离停止的风险

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!