【问题标题】:Multiple Laravel Horizon workers per supervisor using supervisord使用 supervisord 的每个主管多个 Laravel Horizo​​n 工作人员
【发布时间】:2022-06-30 02:41:16
【问题描述】:

我只是将我们的 Laravel v8 队列驱动程序从 db 移动到 redis,使用 Horizo​​n 进行管理。

无论我在config/horizon.php 中配置了什么,我只能在我的所有队列中获得一个工作进程,或者每个队列只有一个工作进程 - 但没有自动平衡。

我修改了主管 scheduler.conf 以运行 2 个(或更多)进程:

[program:horizon]
process_name=%(program_name)s_%(process_num)02d
command=php /www/E3/artisan horizon
autostart=true
autorestart=true
user=web
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/supervisor/horizon.log
stopwaitsecs=3600

但这似乎产生了多个主管(用 Horizo​​n 的说法),每个主管只有一个工人,而不是每个主管有多个工人:

我认为 Horizo​​n 配置正确:

    'defaults' => [
        'supervisor-1' => [
            'connection' => 'redis',
            'queue' => ['high', 'updatestock', 'priceapi', 'pubsub', 'klaviyo', 'default', 'low'],
            'balance' => 'auto',
            'processes' => 2,
            'minProcesses' => 2,
            'maxProcesses' => 10,
            'maxTime' => 3600, // how long the process can run before restarting (to avoid memory leaks)
            'maxJobs' => 0,
            'balanceMaxShift' => 1,
            'balanceCooldown' => 3,
            'memory' => 128,
            'tries' => 3,
            'timeout' => 60,
            'nice' => 0,
        ],
    ],

    'environments' => [

        'staging' => [
            'supervisor-1' => [
                'maxProcesses' => 3,
            ],
        ],
    ],

另外,在尝试进行各种更改时,我不再获得待处理/已完成中显示的任何数据 - json 响应显示计数,但不显示作业数据,例如 /horizon/api/jobs/completed?starting_at=-1&limit=50

{
    "jobs": [],
    "total": 13157
}

【问题讨论】:

    标签: laravel redis supervisord laravel-horizon


    【解决方案1】:

    我认为在这种情况下你不需要担心 supervisor.conf 。 由于基于 Horizo​​n.php - laravel 将自动调整“工人”的数量。

    尝试更改 maxProcesses 并进行测试。

    【讨论】:

      猜你喜欢
      • 2020-05-16
      • 2021-08-26
      • 1970-01-01
      • 2020-05-12
      • 2022-12-30
      • 2013-11-05
      • 2018-12-21
      • 2021-05-22
      • 2013-04-21
      相关资源
      最近更新 更多