在阅读了很多关于 Laravel Horizon 和 Redis 队列的帖子(比如来自 Zechariah Campbell 的这篇文章)并尝试配置和自定义它之后,我无法确定是否可以最大化 laravel Horizon 运行的进程总数。
使用“简单”策略并且每个队列有一个进程(这是我想要的)可能会在拥有 1000 个队列而导致 1000 个进程运行时导致 cpu 或内部内存问题?(默认情况下,每个队列都有自己的进程)
无论队列数量如何,有什么方法可以最大化 Horizon 产生的进程总数?所以 10 个进程和 20 个队列,当一个队列是空的,或者甚至更好地处理了一个队列的一项工作时,工作人员会选择另一个队列吗?
我目前的配置
地平线.php
'local' => [
'supervisor-1' => [
'connection' => 'redis',
'balance' => 'simple',
'processes' => 1,
'tries' => 2,
],
],
队列.php
'redis' => [
'driver' => 'redis',
'connection' => 'queue',
'queue' => "1000,2000,3000",
'retry_after' => 90,
'block_for' => null,
],
laravel 5.8 和地平线 3.0
目前我使用 beanstalkd,但由于缺少 beanstalkd 的维护和一些讨厌的错误,我想迁移到带有 Horizon 的 redis 队列。
更新 2019-05-17:
我尝试了配置 maxProcesses:
'local' => [
'supervisor-1' => [
'connection' => 'redis',
'balance' => 'simple',
'maxProcesses' => 1,
'processes' => 1,
'tries' => 2,
],
],