我設置了3名工人的工人連接並使用了eventlet工人類的gunicorn。它設置在Nginx後面。在每隔幾個請求之後,我會在日誌中看到它。Gunicorn工人超時錯誤
[ERROR] gunicorn.error: WORKER TIMEOUT (pid:23475)
None
[INFO] gunicorn.error: Booting worker with pid: 23514
爲什麼會發生這種情況?我怎樣才能弄清楚什麼是錯誤的?
感謝
我設置了3名工人的工人連接並使用了eventlet工人類的gunicorn。它設置在Nginx後面。在每隔幾個請求之後,我會在日誌中看到它。Gunicorn工人超時錯誤
[ERROR] gunicorn.error: WORKER TIMEOUT (pid:23475)
None
[INFO] gunicorn.error: Booting worker with pid: 23514
爲什麼會發生這種情況?我怎樣才能弄清楚什麼是錯誤的?
感謝
難道是這個嗎? http://docs.gunicorn.org/en/latest/settings.html#timeout
其他可能性可能是您的反應時間過長或停滯不前。
此URL現在是http://docs.gunicorn.org/en/latest/settings.html#timeout – JasonB
您需要使用的其他工人類型的類異步一個像GEVENT或龍捲風看到本作更多的解釋: 首先explantion:
您可能還希望如果安裝Eventlet或GEVENT您希望您的應用程序代碼可能需要請求處理期間暫停長時間
第二個:
默認的同步工作者假定您的應用程序在CPU和網絡帶寬方面是資源綁定的。通常這意味着你的應用程序不應該做任何需要不確定時間的事情。例如,對互聯網的請求符合這個標準。在某些時候,外部網絡將會以客戶端堆積在您的服務器上的方式失敗。
我們在使用Django + nginx + gunicorn時遇到了同樣的問題。從Gunicorn文檔中我們已經配置了幾乎沒有區別的優雅超時。
經過一番測試,我們發現解決方案,要配置的參數是:timeout(而不是優雅超時)。它就像一個時鐘..
所以,千萬:
1)打開gunicorn配置文件
2)將超時設置爲你需要什麼都 - 值處於秒
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
謝謝這是正確的答案。然後,爲了節省許多併發連接的資源:'pip install gevent' ,然後在你的配置文件中加入'worker_class gevent'或在命令行中加入'-k gevent'。 –
使用gevent解決了我的問題。 – LiberiFatali
我有非常類似的問題,我也使用「的runserver」,看看我能找到任何嘗試,但我不得不是一個訊息Killed
所以餘噸這可能是資源問題,我繼續爲實例提供更多內存,並且它工作正常。
即使使用gevent,我也看到了這個問題,並且超時設置正確,內存不足是問題所在 – bcattle
在谷歌雲 只需添加--timeout 90
在app.yaml
entrypoint: gunicorn -b :$PORT main:app --timeout 90
你是能夠解決問題的入口點?請分享您的想法,因爲我也堅持。 'Gunicorn == 19.3.1'和'gevent == 1.0.1' –
找到它的解決方案。增加超時到非常大的值,然後我能夠看到堆棧跟蹤 –