繁体   English   中英

nginx上游服务器“端口不足”

[英]nginx upstream server “out of ports”

我使用nginx作为反向代理,并在上游服务器(Windows 2003)中找到了超过30k的TIME_WAIT状态端口。 我知道我的服务器已不在端口中,在这里进行了讨论( http://nginx.org/pipermail/nginx/2009-April/011255.html ),并且将nginx和上游服务器都设置为重用TIME_WAIT并更快地回收利用。

[sysctl -p]
……
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1

但是,当上游的RPS在1分钟内高于1000时,nginx会挂起,并且在nginx错误日志中仍会发现“连接到上游服务器时连接超时”错误。 如果上游是Windows,则服务器将在几秒钟内“移出端口”。

有任何想法吗? 有等待队列的连接池? Maxim Dounin编写了一个有用的模块来保持与memcached的连接,但是为什么它不支持Web Server?

我是nginx的新手,但据我所知,您需要减少net.ipv4.tcp_fin_timeout值(默认为60秒)。 Nginx不支持开箱即用的后端HTTP连接池。 因此,每个后端请求都会创建一个新连接。 如果有64K端口,并且要等待60秒才能重新使用该端口,则平均RPS不会超过每秒1K。 您可以同时在nginx服务器和后端服务器上减少net.ipv4.tcp_fin_timeout值,也可以将多个IP地址分配给后端框,并将nginx配置为将这些“相同服务器”视为不同服务器。

暂无
暂无

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

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