首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Horizon限制总进程的数量

Laravel Horizon限制总进程的数量
EN

Stack Overflow用户
提问于 2019-05-17 01:23:09
回答 1查看 2K关注 0票数 2

在阅读了相当多关于Laravel horizon的Redis队列的文章(Like this one from Zechariah Campbell)并尝试对其进行配置和自定义后,我无法发现是否有可能最大化由laravel Horizon运行的进程总数。

使用“简单”策略,并且每个队列有一个进程(这就是我想要的),当有1000个队列时,可能会导致cpu或内存问题,这将导致1000个进程运行?(默认情况下,每个队列都有自己的进程)

是否有任何方法可以最大化horizon产生的进程总数,而不考虑队列的数量?所以10个队列处理20个队列,当一个队列是空的,或者更好的是一个队列的一个作业被处理了,工人会选择另一个队列吗?

我的当前配置

horizon.php

代码语言:javascript
复制
'local' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'balance'    => 'simple',
                'processes'  => 1,
                'tries'      => 2,
            ],
        ],

queue.php

代码语言:javascript
复制
'redis' => [
            'driver'      => 'redis',
            'connection'  => 'queue',
            'queue'       => "1000,2000,3000",
            'retry_after' => 90,
            'block_for'   => null,
        ],

laravel 5.8和horizon 3.0

目前我使用的是beanstalkd,但由于缺乏beanstalkd的维护和一些讨厌的bug,我想迁移到带有horizon的redis队列。

更新2019-05-17:

我尝试了配置maxProcesses:

代码语言:javascript
复制
'local' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'balance'    => 'simple',
                'maxProcesses' => 1,
                'processes'  => 1,
                'tries'      => 2,
            ],
        ],

但即使这样,也会创建三个进程,每个队列一个。

EN

回答 1

Stack Overflow用户

发布于 2020-05-06 06:20:58

从Horizon 4(和以前的版本)开始,它将始终为每个队列分配至少一个工作进程。这是没有办法的。因此,如果您的minProcess是1,但是您有3个队列,那么您将至少有3个进程(工作进程)。我猜minProcess的设置更像是minProcessPerQueue的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56173680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档