25

ローカルでは問題なく動作するジョブがありますが、本番環境では動作しない問題が発生します。全体handle()を atry/catchで囲みましたが、他の場所で展開されていない他の多くの例外にもかかわらず、Bugsnag に何も記録されていません。

public function handle() {
    try {

        // do stuff

    } catch (\Exception $e) {
        Bugsnag::notifyException($e);

        throw $e;
    }
}

Laravel Horizo​​nによると、このキュー ジョブは数秒間実行されますが、このジョブに関連するため、それが機能することはなく、テーブル0.0026001930236816406に他のエラーが表示されることもありません。failed_jobs

config/queue.php

    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => 'default',
        'retry_after' => (60 * 10), // 10 minutes
        'block_for' => null,
    ],

config/horizo​​n.php

'environments' => [
    'production' => [
        'supervisor'        => [
            'connection'    => 'redis',
            'queue'         => [
                'default',
            ],
            'balance'       => 'auto',
            'processes'     => 10,
            'tries'         => 3,

            // 10 seconds under the queue's retry_after to avoid overlap
            'timeout'       => (60 * 10) - 10, // Just under 10 mins
        ],

何かが原因でこのジョブが何度も再試行されている場合、どうすれば確認できますか? 私は途方に暮れています。

これまでの調査

  • 私の期待は、クエリを実行できるはずです:
SELECT DISTINCT exception, COUNT(id) as errors
FROM failed_jobs 
WHERE payload LIKE '%[TAG-JOB-HAS]%' 
GROUP BY exception;

このエラー メッセージ以外を表示するには:

ジョブの試行回数が多すぎるか、実行時間が長すぎます

しかし、それは私が見るすべてです。

  • Laravel Horizo​​nのダッシュボードは、問題のジョブが 1 秒未満実行されていることを示しているため、実際にはタイムアウトしていないことがわかります。
4

3 に答える 3