繁体   English   中英

上游超时(uWSGI + NGINX + Flask)

[英]Upstream timed out (uWSGI + NGINX + Flask)

我的应用程序具有以下堆栈:

  1. NGINX(1.4.6)
  2. uWSGI(1.9.17.1-debian(64位))
  3. 烧瓶
  4. Python 3.4

NGINX重新启动后,问题在一段时间(几分钟)内都能正常工作。 在这段时间之后,我收到“ 504网关超时”错误。

NGINX日志:

* 13上游超时(110:连接超时),同时从上游读取响应头,客户端:86.123.39.44,服务器:app.fc.com,请求:“ GET / dashboard / overview HTTP / 1.1”,上游:“ uwsgi ://127.0.0.1:8001“,主机:” app.fc.com“,引荐来源网址:” http://app.fc.com/dashboard/overview

uWSGI日志:

app.fc.com [pid:100017 | app:0 | req:103/219] 86.123.39.44(){859字节中的44个变量} [2018年3月9日星期五06:24:22] GET / login =>生成245以1毫秒为单位的字节数(HTTP / 1.1 302)以131字节为单位的3个标头(核心1上的1个开关)

我的NGINX配置是:

server {
        listen 80;
        listen [::]:80;

        root /var/www/fc/website;
        index index.html index.htm index.php;

        # Make site accessible from http://localhost/
        server_name app.fc.com;

        location / {
                sendfile        on;
                client_max_body_size 20M;
                keepalive_timeout  0;

                proxy_connect_timeout   10;
                proxy_send_timeout      15;
                proxy_read_timeout      20;

                include uwsgi_params;
                uwsgi_pass 127.0.0.1:8001;
                #uwsgi_read_timeout 30;
                #uwsgi_send_timeout 30;
                uwsgi_connect_timeout 60;
                uwsgi_ignore_client_abort on;
        }
}

我的uWSGI配置是:

[uwsgi]
vhost = true
socket = :8001
#wsgi-file = /var/www/app.fc.com/reviewApp/wsgi.py
wsgi-file = /var/www/fc/app/wsgi.py
callable = app
processes = 2
threads = 4
chdir = /var/www/fc/app/

pythonpath = /var/www/fc/app/
pythonpath = /var/www/py3/lib/python3.4
virtualenv = /var/www/py3
plugins = python3

通常,对我的请求的回复持续不到5秒

解决方案

我只是在调用Redis的页面上发现了此行为。 我通过在Redis上为每个请求添加新的连接并在Redis配置中设置连接空闲超时来解决(短期解决方案)。

其他发现

当在许多uWSGI线程之间共享连接时,似乎在300秒的不活动状态(这是出现此问题之后的间隔)后,Redis挂起大约931秒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM