我只是将我们的Laravel v8队列驱动程序从db转移到redis,使用。
无论我在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但这似乎催生了多个主管(用Horizon的话来说),每个主管只有一名员工,而不是每个主管有多名员工:

我认为Horizon配置正确:
'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
}发布于 2022-06-29 18:41:16
我认为在这种情况下,您不需要担心supervisor.conf。由于基于horizon.php - laravel将自动规模的“工人”数量。
尝试更改maxProcesses并测试它。
https://stackoverflow.com/questions/72804497
复制相似问题