阅读(1218) (12)

Laravel 8 Balance 选项

2021-07-09 11:44:35 更新

Horizon 允许你从三个平衡策略中进行选择:simpleauto, 和 falsesimple 策略是配置文件的默认选项,它会在进程之间平均分配进入的任务:

'balance' => 'simple', 

auto 策略根据队列的当前工作负载来调整每个队列的工作进程数量。举个例子,如果你的 notifications 队列有 1000 个等待的任务,而你的 render 队列是空的,那么 Horizon 将为 notifications 队列分配更多的工作线程,直到队列为空。当 balance 选项被设置为 false 时,将使用默认的 Laravel 行为,它按照配置中列出的顺序处理队列。

当使用 auto 策略时,你可以定义 minProcessesmaxProcesses 的配置选项来控制进程的最小和最大数量:

'environments' => [
    'production' => [
        'supervisor-1' => [
            'connection' => 'redis',
            'queue' => ['default'],
            'balance' => 'auto',
            'minProcesses' => 1,
            'maxProcesses' => 10,
            'balanceMaxShift' => 1,
            'balanceCooldown' => 3,
            'tries' => 3,
        ],
    ],
], 

balanceMaxShiftbalanceCooldown 配置项可以确定 Horizon 将以多快的速度扩展进程,在上面的示例中,每 3 秒钟最多创建或销毁一个新进程,你可以根据应用程序的需要随意调整这些值。