【问题标题】:Laravel 6 Horizon Slow - long wait timeLaravel 6 Horizo​​n 慢 - 等待时间长
【发布时间】:2020-09-01 12:17:09
【问题描述】:

我正在使用 https://laravel.com/docs/6.x/horizon 来管理我的应用程序上的队列(使用 redis 后端)。

队列中的作业是短暂的 - 每个排队的作业都应该进行 api 调用(对第三方)并将响应写入 db。

今天我注意到很多作业卡住/处理非常缓慢:

我正在主机节点上运行 10 个具有足够内存的队列工作程序。这是我的config/horizon.php

return [
    'domain' => null,
    'path' => 'horizon',
    'use' => 'default',
    'prefix' => env('HORIZON_PREFIX', 'horizon:'),
    'middleware' => ['web', 'basic.api.credential.auth'],
    'waits' => [
        'redis:default' => 60,
    ],
    'trim' => [
        'recent' => 60,
        'completed' => 60,
        'recent_failed' => 40320,
        'failed' => 40320,
        'monitored' => 40320,
    ],
    'fast_termination' => false,
    'memory_limit' => 512,
    'environments' => [
        'production' => [
            'queue-1' => [
                'connection' => 'redis',
                'queue' => ['default'],
                'balance' => 'simple',
                'processes' => 10,
                'tries' => 2,
                'timeout' => 1800, // 30 Minutes
                'memory' => 512,
            ],
        ],
        // ...
    ],
];

我检查了远程 api 服务器以查看是否存在瓶颈,但它的响应速度非常快(每个 api 调用不到 1 秒)。检查服务器,我看不到它有任何负载,而且整体内存/cpu 利用率很低。

Laravel v6.18.37
PHP v7.3.21
Horizon v3.7.2

任何想法是什么导致了如此巨大的放缓?如何调试它以了解发生了什么?

我什至尝试重新启动服务器,但没有帮助。我也没有在日志中看到任何超时/错误。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    问题出在数据库上,我们用来查找的一些表没有得到适当的优化——添加索引后,速度大大提高。

    抱歉误报。

    【讨论】:

      猜你喜欢
      • 2019-07-05
      • 2020-09-27
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多