如何始终运行20个Laravel队列?

时间:2019-05-17 00:48:25

标签: laravel queue supervisord laravel-queue

我正在使用主管从作业表一次运行20个队列进程。 我的任务计划程序在作业表中创建了大约5000个作业,然后这些作业由20个主管进程处理。

问题是:最初启动了20个队列,但过了一段时间,让我们假设16个队列进程已完成工作,但4个仍在处理中。为什么那16个进程不从队列中选择其他作业,为什么要等所有4个进程完成之后再采取另外20个进程?

此SQL查询应始终始终显示20个结果,但大多数情况下,它始终显示5-10个结果,有时显示1-4个结果。我希望此查询始终显示20个结果。

SELECT * FROM jobs WHERE reserved_at IS NOT NULL;

我在.env文件中使用QUEUE_CONNECTION=database

我无法删除--timeout=0,因为有些工作很小,有些很大,而且我无法对其进行分类。

这是我的主管conf代码;

[program:laravel-worker]

process_name=%(program_name)s_%(process_num)02d

command=php /var/app/current/artisan queue:work --sleep=3 --tries=1 --timeout=0

autostart=true

autorestart=true

user=root

numprocs=20

redirect_stderr=true

stdout_logfile=/var/app/current/storage/logs/worker.log

0 个答案:

没有答案