我正在使用主管从作业表一次运行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