php - Laravel Horizo​​n限制了总流程数量

标签 php laravel redis queue laravel-horizon

在阅读了很多有关带有Redis队列的Laravel Horizo​​n的帖子(Like this one from Zechariah Campbell)并尝试对其进行配置和自定义之后,我无法确定是否有可能最大化laravel Horizo​​n运行的进程总数。

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

有什么方法可以最大化地平线产生的进程总数,而与队列数量无关?因此,有10个进程处理20个队列,而当一个队列为空或什至更好时,一个队列中的一个作业得到处理时,工作人员会选择另一个队列吗?

我当前的配置

horizo​​n.php

'local' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'balance'    => 'simple',
                'processes'  => 1,
                'tries'      => 2,
            ],
        ],

queue.php
'redis' => [
            'driver'      => 'redis',
            'connection'  => 'queue',
            'queue'       => "1000,2000,3000",
            'retry_after' => 90,
            'block_for'   => null,
        ],

laravel 5.8和Horizo​​n 3.0

目前,我使用beantalkd,但是由于缺乏beantalkd的维护和一些讨厌的bug,我想迁移到具有地平线的redis队列。

更新2019-05-17:

我尝试了配置maxProcesses:
'local' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'balance'    => 'simple',
                'maxProcesses' => 1,
                'processes'  => 1,
                'tries'      => 2,
            ],
        ],

但是即使那样,也会创建三个进程,每个队列一个。
enter image description here

最佳答案

从Horizo​​n 4(及以前的版本)开始,它将始终为每个队列分配至少1个工作线程。没有办法解决。
因此,如果您的minProcess为1,但是您有3个队列,那么您将至少有3个进程(工作人员)。我猜minProcess设置更像是minProcessPerQueue

关于php - Laravel Horizo​​n限制了总流程数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56173680/

相关文章:

redis - 解密redis日志

php - 由于两个 select 语句,分页不起作用

php - 如何在 Symfony 1.4 中运行任务时使用更少的内存?

php - 在 where 子句中使用日期时,Laravel Eloquent 返回空

Laravel 支付多订阅

php - 错误 :14090086:SSL certificate verify failed on Laravel Homestead

php - QuickBooks webhooks 在本地与 ngrok 一起工作,但不能在生产中工作

javascript - 从文本框中获取值并作为建议传递到下一个文本框

php - 当 REDIS 想要过期时如何处理

node.js - 如何在socketio-redis管理的socketio进程集群中查找用户socket