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 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 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,是不是超过重试启动次数了,看下上面的日志输出
1年前 评论
  • command=php artisan queue:work redis --sleep=3 --tries=1 --timeout=30 --queue=high,default,low这一句tries=1指定了重试次数1
  • startretries=3这个指定了supervisor启动失败自动重试3次

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

1年前 评论

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

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

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

3个月前 评论

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