【发布时间】:2018-11-24 04:44:32
【问题描述】:
我有一个调度job 的控制器函数。当这个job 被处理时,最后它再次发送相同的job(使用不同的参数)。共有5个相同的工作。
Queue driver: database
问题是:我记录了从create()到handle()的持续时间。控制器调度的第一个作业耗时 1700 毫秒,其他作业自己调度的作业仅耗时 40 毫秒。
Queue driver: sync
当我改用sync队列驱动时,所有的工作都以闪电般的速度工作。
调查结果:
第一个队列作业从create() 到handle() 花费了很长时间。在此之前,队列是空的。可能是队列驱动问题。
请问为什么以及如何解决?谢谢!!
更新:
添加了一个TestJob,它会在处理作业时自行调度。这意味着队列总是有一个 TestJob 正在处理或等待处理。
重复我原来的工作,从created() 到handle() 只用了
结论:
我很确定这是队列驱动程序的问题。当队列为空时,工作人员似乎睡着了。请问有谁知道解决方法吗?
【问题讨论】:
标签: laravel performance queue jobs