Laravel队列相关问题记录
经常遇到队列相关的问题,仅此自己记录一下#
使用 supervisor 重启 horizon 之后代码未生效?#
- 官方推荐部署不重启 supervisor
部署使用以下命令将优雅退出,之前会出现僵尸进程,目前不清楚是否还有这个问题 php artisan horizon:terminate
- 必须停止 supervisor,然后 kill 残留进程。然后再启动
# 停止所有服务
supervisorctl stop all
# kill进程
ps -ef | grep supervisor
kill -9 进程id
如果进程过多:
ps -ef |grep horizon:work |awk '{print $2}'|xargs kill -9
# 重新启动
supervisord -c /etc/supervisord.conf
supervisorctl reload
- 最近研究一种发送信号的方式,但不确定是否能避免问题
平滑重启
supervisorctl signal hup xxx
需要注意的一个配置 retry_after#
在 config/queue.php 下有个配置 redis => [ retry_after => 90]
这个配置什么意思呢?假如你有一个队列任务耗时 4-10 秒,而 retry_after 配置为 5,那么本次任务在 5 秒内没执行完,本次任务就会终止,重新推入队列重试。再次执行时如果 5 秒内执行完了。那么任务才会成功。所以这个配置需要注意: retry_after 的配置时间一定要大于任务的执行时间
同一个服务器运行了多个项目需要配置 prefix#
在文件 config/horizon/prefix, 也就是 .env 文件的 HORIZON_PREFIX
不同项目一定要配置不同的 prefix,否则队列任务会混淆到一起
多谢群里老哥解答,我也只是照搬记录。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: