2015-12-28 12 views
5

状況私のLaravel Queueジョブが60秒後に失敗するのはなぜですか?

私は(わずか1時間まで言うことができます)個々のジョブが分かかることが予想され、メディアファイルを大量に処理するために、Laravelキューを使用しています。

スーパーバイザを使用してキューを実行していますが、一度に20個のプロセスを実行しています。上司の設定ファイルは次のようになります。

[program:duplitron-worker] 
process_name=%(program_name)s_%(process_num)02d 
command=php /var/www/duplitron/artisan queue:listen database --timeout=0 --memory=500 --tries=1 
autostart=true 
autorestart=true 
user=duplitron 
numprocs=20 
redirect_stderr=true 
stdout_logfile=/var/www/duplitron/storage/logs/duplitron-worker.log 

私が説明する方法を知っているか、正しいませんいくつかの奇妙あります

  1. 私の仕事はかなり一貫して60〜65秒間実行した後に失敗するが、 。
  2. 失敗したとマークされた後、は、失敗としてマークされた後でも、を実行し続けます。最終的に彼らはうまく解決することに終わります。
  3. 問題の原因を見つけるために私がrun the failed task in isolationになったときに問題なく成功します。

私は強く、これはタイムアウトの問題であると考えています。しかし、私は--timeout=0が無制限のタイムアウトになるという印象を受けました。

質問

どのように私は、この一時的な「失敗」のジョブ状態を防ぐことができますか?私が気付いていないキューのタイムアウトが発生する可能性のある他の場所はありますか?

+1

は 'あなたのphp.iniをmax_execution_time' をチェックし、それはどのくらいを言うのでしょうか?それが60秒なら、あなたの問題がある。タイムアウトを長くしてみてください。 –

+0

グレート思考@WillyPtは - php.iniの設定はいえ、全体のスクリプトを終了しないのでしょうか?それは解決し続けます。 (FWIW 'max_execution_time'が30代に設定した、私は探検し、それらの線に沿って実験します)。 – slifty

答えて

10

それはまた、タイムアウトに高い値にトリックをしたことを変更config/queue.php

'database' => [ 
     'driver' => 'database', 
     'table' => 'jobs', 
     'queue' => 'default', 
     'expire' => 60, 
    ], 

で定義されたexpire設定があることが判明しました。

2

重要な注意: "有効期限切れ" となりました(Laravel 5.4) "retry_after" と呼ばれている

関連する問題