Nginx背后的Gunicorn – 负载testing期间有大量的TIME_WAIT

nginx版本:nginx / 1.9.3 gunicorn(版本19.7.1)

我有一个小型烧瓶API通过nginx后面的gunicorn运行。 当我通过gunicorn直接加载testing时,一切工作正常,但是一旦我将它指向nginx,我就会在nginx服务器上获得非常多的TIME_WAIT套接字。 Gunicorn框是好的。 这里是configuration:

Gunicorn:

bind = '0.0.0.0:7030' workers = 10 threads = 1 daemon = True DEBUG = "True" 

Nginx:相关的块:

 upstream api { keepalive 32; server box1:7030; server box2:7030; } server { listen 7077; server_name localhost; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 1; location / { proxy_next_upstream error timeout http_500 http_404 http_502; proxy_pass http://api; proxy_http_version 1.1; proxy_set_header Connection ""; } } 

我一直在testing和调整configuration,但是我看不到打开套接字数量的任何变化。 我知道有几个build议调整的操作系统设置,例如ip_local_port_range和tcp_tw_recycle / tcp_tw_reuse,但是我正在其中一个需要共享服务器的环境中工作,而且我无法在没有很长时间的情况下调整这些设置。

我可以在nginx / gunicorn方面做任何事吗? 注意运行gunicorn的服务器并没有显示出很多开放的套接字,Nginx是否期望从gunicorn / flask / api中保持连接打开并重新使用现有的套接字?