webman框架中使用redis队列,运行过程中,如果进行reload/restart时,会直接结束正在消费的任务,导致任务处理一半,这种情况有啥方法处理吗?
业务处理一半是啥意思?没太理解呀
应该是队列里有个操作,比较耗时,比如要10秒才能完成,但是2秒的时候就强制中断了
哦哦
config/server.php 里设置 stop_timeout ,这个是设置服务停止的超时时间。官方默认2秒,意思是如果进程在收到停止信号2秒后业务还没有处理完,就执行kill。 如果你的队列处理得慢,比如要10秒才能处理完,就设置成比10秒大的值,比如15。
原来stop_timeout还有这层意思,之前以为是用户端超时,不过也代表了用户端的超时时间
队列任务处理需要10秒,stop_timeout 设置成15秒,11秒后又开始处理下一个队列任务了,还是有处理了一半问题,这咋办?
这个参数不是这样理解的,是有任务正在消费,等待进程15秒,输出重启或者停止命令后就不会接受新的任务了,nginx平滑重启还记得吧
试了下,是能平滑重启,谢谢各位帅哥。
业务处理一半是啥意思?没太理解呀
应该是队列里有个操作,比较耗时,比如要10秒才能完成,但是2秒的时候就强制中断了
哦哦
config/server.php 里设置 stop_timeout ,这个是设置服务停止的超时时间。官方默认2秒,意思是如果进程在收到停止信号2秒后业务还没有处理完,就执行kill。
如果你的队列处理得慢,比如要10秒才能处理完,就设置成比10秒大的值,比如15。
原来stop_timeout还有这层意思,之前以为是用户端超时,不过也代表了用户端的超时时间
队列任务处理需要10秒,stop_timeout 设置成15秒,11秒后又开始处理下一个队列任务了,还是有处理了一半问题,这咋办?
这个参数不是这样理解的,是有任务正在消费,等待进程15秒,输出重启或者停止命令后就不会接受新的任务了,nginx平滑重启还记得吧
试了下,是能平滑重启,谢谢各位帅哥。