与“龙卷风”设置相比,为什么“nginx + tornado”设置需要更长时间才能返回结果?

时间:2017-03-13 01:38:52

标签: python nginx tornado

我在5台龙卷风服务器前面有一个nginx。

当我直接调用我的Tornado服务器之一时,结果会很快返回。

但是当我调用nginx时,返回结果需要很长时间。在检查日志时,我可以看到请求几乎立即以“OPTIONS”的形式进入nginx和所选龙卷风服务器。但随后它会花费很少的时间,之后我会在日志中看到“GET”请求,然后返回响应。为什么OPTIONS和GET之间有这么长的延迟?在直接调用Tornado时,OPTIONS和GET请求会很快发生。我是否需要在我的nginx配置文件中更改某些内容才能提高性能?

我的nginx配置如下所示:

worker_processes 1;

error_log  logs/error.;

events {
    worker_connections 1024;
}

http {
    # Enumerate all the Tornado servers here
    upstream frontends {
        server 127.0.0.1:5052;
        server 127.0.0.1:5053;
        server 127.0.0.1:5054;
        server 127.0.0.1:5055;
        server 127.0.0.1:5056;
    }

    include mime.types;
    default_type application/octet-stream;

    keepalive_timeout 65;

    sendfile on;


    server {
        listen 5050;
        server_name x;

        ssl on;
        ssl_certificate certificate.crt;
        ssl_certificate_key keyfile.key;

        location / {
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
            proxy_pass https://frontends;
        }
    }
}

我的龙卷风文件有这样的结构:

import tornado.httpserver
import tornado.ioloop
import tornado.web
from flasky import app
from tornado.wsgi import WSGIContainer
from tornado.ioloop import IOLoop
from tornado.web import FallbackHandler

tr = WSGIContainer(app)

application = tornado.web.Application([
    (r".*", FallbackHandler, dict(fallback=tr)),
])

if __name__ == '__main__':
    http_server = tornado.httpserver.HTTPServer(application, ssl_options={
        "certfile": "certificate.crt",
        "keyfile": "keyfile.key",
    })
    http_server.listen(5056, address='127.0.0.1')
    IOLoop.instance().start()

0 个答案:

没有答案