繁体   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