【计算机网络】服务端和客户端最大支持多少tcp连接?如何分析?

(一)引用文章

Linux 中每个 TCP 连接最少占用多少内存?

你管这破玩意叫 IO 多路复用?

原文链接1

原文链接2


(二)简单分析:

1.基本概念:TCP四元组

所谓tcp连接是由一个四元组组成,如下所示:

本地ip地址+本地端口+远端ip地址+远端端口

一个设备不管是服务端还是客户端,所支持的最大tcp连接数,如果不考虑cpu及内存消耗,只和这四个因素有关


2.多个客户端连接一个服务端最大支持最大多少tcp连接?

总结:一个web应用,监听某个端口,在不考虑内存、cpu及linux文件数目限制的前提,其可以建立的web连接是可以很大的,具体大于多少?肯定大于百万,甚至千万。

1.在不考虑服务端cpu和内存消耗情况下,一个服务端web程序,不论是netty、tomcat、jetty、undertow,还是其他语言其他框架的web应用,其首先在四元组中有两个确定参数,即:本地主机ip+本地主机监听端口。

2.变化一:客户端ip地址,有多少个客户端就有多少个端口,因此这里可以理解为很大。

3.变化二:客户端发起端口,通常linux默认情况下单ip支持的端口是65536个,除去前1024个端口外,其他均可以作为客户端发起端口,因此这里的个数是6w以上。


3.一个客户端连接一个服务端最大支持多少个tcp连接?

1.上两节已经提到,tcp连接是一个四元组,对于连接同一个服务端 的web,其远端ip及远端端口已经固定,唯一的变量是本地ip和本地端口。

2.通常情况下由于本地ip也是固定的,因此唯一的变量成为发起连接的端口号,由于一个ip linux最多支持65536个端口,其中前1024个端口保留,剩下来了6w多个端口,也就是说,如果客户端连接最多支持向统一服务端web应用的统一端口建立6w多个连接。


当然这里也有几个注意事项:

1.客户端连接同一服务端web应用的相同监听端口最大支持6w多个端口,这里的前提是linux调整tcp连接参数,默认情况下这个分配范围并不是1024-65536,这个值需要修改。

2.客户端如果可以在发起连接的时候改变本地ip地址,每增加一个ip,其最大连接能力也因此增加6w多个,这里有许多做法,比如配置多网卡、配置子接口等等,请查看其他资料。

3.微服务化日益流行的当下,通常使用nginx做反向代理,将请求hash到不同服务端,对于需要支持百万连接的服务,如果只有一个nginx不配置多个ip或者开启相关配置(这里nginx是否支持向同一服务端口以不同ip发起连接,本人并没有研究,有待确认),最多也就是支持像一个服务同时连接6w多个tcp连接。


(二)全面分析

我是一个 Linux 服务器上的进程,名叫小进。
老是有人说我最多只能创建 65535 个 TCP 连接。
我不信这个邪,今天我要亲自去实践

  • 18
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值