在阅读了相当多关于Laravel horizon的Redis队列的文章(Like this one from Zechariah Campbell)并尝试对其进行配置和自定义后,我无法发现是否有可能最大化由laravel Horizon运行的进程总数。
使用“简单”策略,并且每个队列有一个进程(这就是我想要的),当有1000个队列时,可能会导致cpu或内存问题,这将导致1000个进程运行?(默认情况下,每个队列都有自己的进程)
是否有任何方法可以最大化horizon产生的进程总数,而不考虑队列的数量?所以10个队列处理20个队列,当一个队列是空的,或者更好的是一个队列的一个作业被处理了,工人会选择另一个队列吗?
我的当前配置
horizon.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和horizon 3.0
目前我使用的是beanstalkd,但由于缺乏beanstalkd的维护和一些讨厌的bug,我想迁移到带有horizon的redis队列。
更新2019-05-17:
我尝试了配置maxProcesses:
'local' => [
'supervisor-1' => [
'connection' => 'redis',
'balance' => 'simple',
'maxProcesses' => 1,
'processes' => 1,
'tries' => 2,
],
],但即使这样,也会创建三个进程,每个队列一个。

发布于 2020-05-06 06:20:58
从Horizon 4(和以前的版本)开始,它将始终为每个队列分配至少一个工作进程。这是没有办法的。因此,如果您的minProcess是1,但是您有3个队列,那么您将至少有3个进程(工作进程)。我猜minProcess的设置更像是minProcessPerQueue的事情。
https://stackoverflow.com/questions/56173680
复制相似问题