[英]110: Connection timed out (Nginx/Gunicorn)
我在 gunicorn+nginx 上運行 django。 我在上傳文件時遇到問題。 實際上上傳工作正常,但 gunicorn 超時,從而在 nginx 中導致這種情況:
2011/07/25 12:13:47 [error] 15169#0: *2317 upstream timed out (110: Connection timed out) while reading response header from upstream, client: IP-ADDRESS, server: SERVER, request: "GET /photos/events/event/25 HTTP/1.1", upstream: "http://127.0.0.1:29000/photos/events/event/25", host: "HOST", referrer: "REFERER_ADDRESS"
如果我刷新頁面,我可以看到所有照片都上傳得很好。 問題是它會導致超時,從而給人一種上傳不起作用的印象。
這是我的 gunicorn conf:
bind = "127.0.0.1:29000"
logfile = "/path/to/logs/gunicorn.log"
workers = 3
我嘗試更改超時,但沒有用。
您可以嘗試通過添加以下內容來升級 Nginx 中代理傳遞的超時:
proxy_connect_timeout 75s;
proxy_read_timeout 300s;
在 /var/nginx/sites-available/[site-config] 或 /var/nginx/nginx.conf 上,如果您想增加 nginx 服務的所有站點的超時限制。
您還必須將--timeout 300
添加到您的 gunicorn 進程/配置中。
這解決了我過去上傳更大的問題。
這不是 nginx 超時,而可能是 Gunicorn 超時。 Gunicorn 默認為 30 秒超時。
通常,您應該通過不讓端點返回時間超過 30 秒來解決此問題,但如果它是一個很少使用的端點,您也可以增加 gunicorn 超時。
如果您這樣做,您可能還應該增加 gunicorn 工作進程的數量。
要增加 gunicorn 的超時和工作人員,您可以在啟動時添加以下命令行選項:
gunicorn --timeout 120 --workers <NUMBER OF WORKER YOU WANT>
我們在使用 Django+nginx+gunicorn 時遇到了同樣的問題。 從 Gunicorn 文檔中,我們配置了幾乎沒有區別的優雅超時。
經過一些測試,我們找到了解決方案,配置的參數是:超時(而不是優雅超時)。 它像時鍾一樣工作..
所以,做:
1)打開gunicorn配置文件
2) 將 TIMEOUT 設置為您需要的值 - 值以秒為單位
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
如果您在 Nginx 中使用反向代理並使用 Gunicorn 運行 Django 應用程序,請嘗試從默認值調整 Gunicorn 超時參數和 proxy_read_timeout 參數。
這可能會幫助有類似問題的人。
我在我的 Django 應用程序上收到來自 nginx 和 gunicorn 的超時錯誤。 因為我從 nginx 收到超時錯誤,所以我看不到 Django 的真正錯誤。 在添加了像 fijter 建議的新超時之后。 我可以看到錯誤在 settings.py 文件中。
如果您將 DEBUG 設置為 False,並且沒有在 ALLOWED_HOSTS 中添加域名,您可能會收到此錯誤。
我剛剛在 settings.py 的 ALLOWED_HOSTS 中添加了域,錯誤消失了。
非常簡單的解決方案!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.