一个IP能建立的最大连接数是多少?

http://www.cnblogs.com/xred/p/3898611.html

一个IP能建立的最大连接数是多少?

在探讨这个问题前,我们先假设一种经典的连接模型:
Client -> Load Balancer-> RealServer Pool

并且我们假设这里使用NAT模式的负载均衡,在这种模式下:

1.负载均衡器只留给客户端一个公网IP地址(VIP);
2.客户端发来的请求都被负载均衡器端截,然后通过调度算法转发到RealServer Pool里面的某台服务器;
3.这些RealServer都在一个私有网络里面,对外不可见;
4.负载均衡器转发请求到真实服务器(RealServer)的时候同时做了NAT,真实服务器看到的连接都是来自负载均衡器的(和真实服务器在一个私有网络的IP)。

首先,我们从Client Side(Client->Load Balancer)来分析:
这端的连接都由SourceIP:SoucePort->DesIP:DesPort唯一标识,所以对我们来说,能支持的连接数仅仅受限于负载均衡器的内存数(连接数可以是65000+),因为DesIP和DesPort都是已知的唯一的(比如IP:80).

然后再从Server Side(Load Balancer->RealServer)来分析:
这端的连接数刚好相反,每个连接都由负载均衡器的IP(这里称MIP:Mapped IP)和随机的端口进行标识。即: MIP:RandomPort -> RealServerIP:80
这样,因为负载均衡器的端口也受限于TCP/IP的最大端口数64k(65536)限制,因此最多只能建立64k的服务器连接(server connnections).

由于瓶颈很可能就出现在服务器端连接上,针对这种情况,各负载均衡器厂家是怎么解决的呢?
1. NetScaler
我们首先来看NetScaler的解决办法,NetScaler的解决办法很简单,增加MIP的个数,这样最大的服务器连接数将变成:
MaxServerConnections = 65536 * MIP数

2. F5
F5其实也使用了一样的办法,但是F5首先建立一个Source-NAT pool,然后在SNAT Pool里面加入多个IP地址。这样得到的最大连接数和NetScaler完全一样:
SA:SP -> DA:DP
10.1.1.1:1024 -> 10.1.1.100:80
10.1.1.2:1024 -> 10.1.1.100:80
PS: 这里10.1.1.1和10.1.1.2都在一个SNAT pool里面。

上述情况都是理论计算值,真实环境下的最大连接数还受限于各种因素:
1. 每个连接都要耗费一定的资源,比如CPU、MEM,所以,真实值往往很难达到理论值;
2. 根据协议的不同,能达到的最大连接数也不一样,比如HTTP/1.0连接的创建和关闭都非常快,而且浏览器对并发连接数有限制,所以,很难达到最大的理论 值。HTTP/1.1支持流线技术,多个请求可以复用一个连接,这样就大大减少了并发连接数。FTP或者telnet连接都是长连接,很容易达到最大值;
3. 很多设备(比如NetScaler)在服务器端都支持连接池(连接复用),里面的连接都是长连接,一样实现了HTTP/1.1里面的流线技术,一个连接就可以处理多个客户端连接。这样除了减少连接资源,同时还减少了负载均衡器的其他资源开销,同时减低了内网的带宽;
4. 一些设备(比如NetScaler的TCP-OFFLOAD)支持TCP卸载,仅仅把已经建立的连接发到服务器端,而TCP的三次握手完全有负载均衡器接管,这样,服务器端的连接就成倍的减少。

转自:http://www.tektea.com/archives/4140.html ,茶话汇

时间: 2024-11-03 21:42:28

一个IP能建立的最大连接数是多少?的相关文章

一个IP绑定多个域名

一个IP绑定多个域名  [复制链接] 发表于 2006-6-6 10:15 | 来自  51CTO网页 [只看他] 楼主 如何在多WEB运行的服务器上绑定多域名? 一个IP绑定多个域名 很多虚拟主机,只有一个IP,很多个域名都指向该IP,但都能访问自己域名所在的网站的内容,这就是一个IP绑定多个域名的技术.下面我们一起来学习学习是怎么做的 首先,你应该确认你的两个域名都指向了主机IP,我们拿JZ173.COM和xxsky.com来举个例子 我们应该首先将这两个域名都指向一个IP,如192.168

TCP server 为什么一个端口可以建立多个连接?

https://segmentfault.com/q/1010000003101541 如果是tcp client用同一个本地端口去连不同的两个服务器ip,连第二个时就会提示端口已被占用.但服务器的监听端口,可以accept多次,建立多个socket:我的问题是服务器一个端口为什么能建立多个连接而客户端却不行呢? 2015年08月16日提问 评论 邀请回答 编辑 更多 默认排序时间排序 5个回答 答案对人有帮助,有参考价值8答案没帮助,是错误的答案,答非所问 已采纳 TCP server 可以,

一个人也可以建立 TCP 连接呢

今天(恰巧是今天)看到有人在 SegmentFault 上问「TCP server 为什么一个端口可以建立多个连接?」.提问者认为 client 端就不能使用相同的本地端口了.理论上来说,确定一条链路,只要五元组(源IP.源端口号.目标IP.目标端口号.协议)唯一就可以了,所以这不应该是技术限制.而实际上,Linux 3.9 之后确实可以让客户端使用相同的地址来连接不同的目标,只不过要提前跟内核说好而已. 当然,你不能使用同一个 socket,不然调用connect连接的时候会报错: 1 [Er

python教程判断一下一个 IP 在不在线?ping IP教程

假设今天老板给我们一个任务,让我们判断一下一个 IP 在不在线.我们随手用 python 写一个 ping IP 的代码: import os host = input('请输入要检测的 IP : ')result = os.popen('ping -c 1 -t 1 %s' % (host)).read() if 'ttl' in result: print('IP 在线')else: print('IP 不在线') [dl]15-4342[/dl] 现在,你作为一名审核代码的人员,不考虑代码

【翻译自mos文章】怎么正确的计算一个ip地址的subnet id?

怎么正确的计算一个ip地址的subnet id? 来源于: How to calculate the correct subnet for an interface (文档 ID 1059759.1) 适用于: Oracle Database - Enterprise Edition - Version 10.2.0.1 and later Information in this document applies to any platform. 目标: 正确的计算一个ip地址的subnet i

让IIS只监听一个IP上的80端口

服务器上分配了3个IP,想让IIS监听其中一个IP,其余端口分配给tomcat,经研究方法如下: 1.打开命令行,运行CMD 进入CMD界面2.输入netsh 进入网络配置3.输入http 进入HTTP配置4.输入sho iplisten 查看当前IIS监听的IP列表 (如果为空即默认为所有IP)5.输入 add iplisten ipaddess=10.1.1.1 (这里会提示添加成功)6.再次输入 sho iplisten 进行查看 (正常情况这里会出现 10.1.1.1的信息) 到上面为止

tomcat一个IP绑定多个域名,不同域名访问不同的应用

修改conf文件夹下面的server.xml的Engine里面的内容即可原始内容如下: …… <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <Host name=

【随笔】使用mOnOwall封禁某一个ip

有时候,查看服务器日志时会发现某些人的恶意登录记录: 这时候,我们就要把这个ip封掉. 首先ping一下这个ip: 然后打开monowall路由页面,点击Firewall-->Rules: 点击下方的,添加一个规则,然后更改: Action ==> Block Protocol ==> any Destination ==> Type --> Single host or alias Address --> 1.93.34.211 点击保存. 一般新添加的规则是排到最后

使用必应查询接口开发搜索工具:反查一个IP上的旁站

前言:必应提供了"Bing Search API",免费版的一个月可以查询5000次,我们可以通过调用这个API方便的使用必应的查询服务.其中"K8_C段旁注查询工具V2.0"就使用到了这个API,接下来我将详细说明在Java中如何使用这个API 一 API申请 申请地址:https://datamarket.azure.com/dataset/bing/search 当然首先要进行登陆,没有账号的话就注册一个,但是需要注意的是"国家/地区"这个