本来不想水的,公司的白先生硬要我水一篇,那就简单记录一下。
问题
上周,系统出现了一个很要命的问题,后端用的 laravel 队列执行导表任务异常缓慢,以前几分钟就能出的报告,几个小时都没动静,因为业务需要,每次用户观看视频都需要计算一些非常耗时的任务。
调研
后来调查尝试也确实是这块出了问题,laravel 文档中介绍了队列的优先级,提到参数顺序的问题。
$ php artisan queue:work --queue=high,low
--queue
为队列的名称,参数用 ,
分割,排的越靠前优先级越高。所以将越耗时的任务的优先级设置越低,将位置设置越靠后就好了。
小结
所以如果系统中存在耗时任务,造成整个队列都被卡住,应该按预计的执行耗时排序,将越耗时的任务提到越靠后的位置,这样就可以解决执行时间较短的任务优先执行
网友评论