簡體   English   中英

110:連接超時(Nginx/Gunicorn)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM