tp5 think-queue队列延迟问题解决

Tp5 think-queue执行任务时,任务数量太多导致延迟执行问题解决

示例业务逻辑代码如下: fire为实际执行, push为添加队列任务

image.png

1.单进程实际运行

开始时间: 10:45:12 结束:10:46:55 用时103秒,有延迟情况,也有后执行排前面情况;

image.png

image.png

2. 多进程测试(分别将supervior守护进程调整为2和10)

A. 守护进程数为2
image.png

image.png

有重复被两个进程执行的情况


image.png

image.png
B. 守护进程调为10
image.png
image.png

有重复被两个或多个进程执行的情况,笔两个进程时间更短,但同时重复执行率更高(基本上重复执行3次)

3. 代码调整

A. 先执行job delete,再进行执行计划,进程数为10
image.png

image.png

image.png

计划没有重复执行,同时时间也大幅缩短

但是计划总数增加到1000个之后出现多余执行情况

实测模拟 0.1 0.2 0.5秒执行时间,重复执行次数都在60-70之间, 故先delete只能减少部分情况,高并发不太适用

image.png
image.png

image.png

image.png

image.png
B. 业务逻辑做限制(已执行的话禁止在执行)
image.png

image.png

实际执行仍然有多余执行情况(实测1000,2000个没问题,3000个开始就有多余情况出现)

C. 分多队列,多个单进程进行监听

操作: push时随机推送duilie1,duilie2,duilie3...,添加多个supervior单进程监听任务

未实测,猜测不会出现多次执行情况

你可能感兴趣的:(tp5 think-queue队列延迟问题解决)