2012-06-01 23 views
93

私は、3人のワーカー30人のワーカーの接続と、イベントレットのワーカークラスを使用して、セットアップガンコンを持っています。これはNginxの背後に設定されています。いくつかのリクエストがあるたびに、ログに表示されます。Gunicornワーカーのタイムアウトエラー

[ERROR] gunicorn.error: WORKER TIMEOUT (pid:23475) 
None 
[INFO] gunicorn.error: Booting worker with pid: 23514 

どうしてですか?何がうまくいかないのか分かりますか?

おかげ

+1

にエントリポイントする--timeout 90を追加しますか?私もそれに固執してあなたの考えを共有してください。 'Gunicorn == 19.3.1'と' gevent == 1.0.1' –

+1

解決策を見つけました。タイムアウトを非常に大きな値に増やして、スタックトレースを確認できました –

答えて

10

--log-level=DEBUGで実行Gunicorn。

アプリスタックのトレースが必要です。

+36

私の場合はありません。 – Joe

+7

これは '-log-level debug'です – psychok7

+1

私はstracktraceを取得したいと思いますが、gunicorn 19.4.5を使用してここでは動作しません。デバッグのものが表示されるので、フラグが認識されたと思いますが、スタックトレースはタイムアウトしていません。 – orzel

5

あなたはgeventまたは竜巻のような非同期1は、より詳細な説明のためにこれを参照して、他の労働者の型クラスを使用する必要があります: まずexplantionを:

あなたはまた、場合EventletやGeventをインストールすることをお勧めしますあなたは、あなたのアプリケーションコードは、要求の処理中に長時間

2つ目一時停止する必要があることを期待:

デフォルトの同期ワーカーは、アプリケーションがCPUとネットワークの帯域幅に関してリソースにバインドされていることを前提としています。一般的にこれは、アプリケーションが定義されていない時間がかかるものを実行してはならないことを意味します。例えば、インターネットへの要求はこの基準を満たす。ある時点では、外部ネットワークはクライアントがサーバー上に溜まるように失敗します。

75

Django + nginx + gunicornを使用して同じ問題が発生しました。 Gunicornのドキュメンテーションから、ほとんど差がない優雅なタイムアウトを設定しました。

いくつかのテストの後、私たちは解決策を見つけました。設定するパラメータはtimeoutです(グレースフルタイムアウトではありません)。それは、..だから時計が好きですか

に動作します:

1) は)あなたが必要とするものにTIMEOUTを設定しgunicornコンフィギュレーションファイルを開く - 値は秒単位である

NUM_WORKERS=3 
TIMEOUT=120 

exec gunicorn ${DJANGO_WSGI_MODULE}:application \ 
--name $NAME \ 
--workers $NUM_WORKERS \ 
--timeout $TIMEOUT \ 
--log-level=debug \ 
--bind=127.0.0.1:9000 \ 
--pid=$PIDFILE 
+5

です。これは正しい答えです。 'pip install gevent' そして、configファイルの' worker_class gevent'やコマンドラインの '-k gevent'を実行します。 –

+1

を使用すると、問題が解決します。 – LiberiFatali

3

私はまた、私は何かを見つけることができるかどうかを確認するために「のrunserver」を使用してみましたが、私が持っていたすべてのメッセージKilled

だから私トンでした、非常によく似た問題を抱えていましたそれはリソースの問題になる可能性があると思って、私は先に進み、インスタンスにもっと多くのRAMを与え、それは働いた。Googleクラウド で

+0

私はgeventでこの問題が発生していて、タイムアウトが正しく設定されていて、メモリ不足が問題でした – bcattle

2

はちょうどあなたが問題を解決することができましたapp.yaml

entrypoint: gunicorn -b :$PORT main:app --timeout 90 
関連する問題