nginx 上游服务器“端口不足”
Posted
技术标签:
【中文标题】nginx 上游服务器“端口不足”【英文标题】:nginx upstream server "out of ports" 【发布时间】:2011-08-13 12:04:14 【问题描述】:我使用 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的错误日志中仍然可以找到“连接到上游服务器时连接超时”的错误。当上游是 Windows 时,服务器将在几秒钟内“端口不足”。
有什么想法吗?带有等待队列的连接池? Maxim Dounin 写了一个有用的模块来保持与 memcached 的连接,但是为什么它不能支持 Web Server?
【问题讨论】:
也许这是给serverfault.com的? 【参考方案1】:我是 nginx 新手,但据我所知,您需要减少默认为 60 秒的 net.ipv4.tcp_fin_timeout 值。开箱即用的 nginx 不支持带有后端的 http 连接池。因此,对后端的每个请求都会创建一个新连接。使用 64K 端口并在该端口可以重用之前等待 60 秒,平均 RPS 不会超过每秒 1K。您可以减少 您在 nginx 服务器和后端服务器上的 net.ipv4.tcp_fin_timeout 值,或者您可以为后端盒分配多个 ip 地址并配置 nginx 以将这些“相同的服务器”视为不同的服务器。
【讨论】:
以上是关于nginx 上游服务器“端口不足”的主要内容,如果未能解决你的问题,请参考以下文章