我在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()