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 协议》,转载必须注明作者和本文链接
推荐文章: