网站空间站,wordpress 在线生成app,网站做优化应该具备什么,成都网站设计哪家比较好一台服务器最大能支持多少连接#xff1f;一台客户端机器最多能发起多少条连接#xff1f;#xff1f;
我们知道TCP连接#xff0c;从根本上看其实就是client和server端在内存中维护的一组【socket内核对象】#xff08;这里也对应着TCP四元组#xff1a;源IP、源端口、…一台服务器最大能支持多少连接一台客户端机器最多能发起多少条连接
我们知道TCP连接从根本上看其实就是client和server端在内存中维护的一组【socket内核对象】这里也对应着TCP四元组源IP、源端口、目标IP、目标端口他们只要能够找到对方那么就算是一条连接。那么一台服务器最大能建立多少条连接呢
由于TCP连接本质上可以理解为是client-server端的一对socket内核对象那么从理论上将应该是【2^32 (ip数) * 2^16 (端口数)】条连接约等于两百多万亿
但是实际上由于受其他软硬件的影响我们一台服务器不可能能建立这么多连接主要是受CPU和内存限制。
如果只以ESTABLISH状态的连接来算这些连接只是建立但是不收发数据也不处理相关的业务逻辑那么一台服务器最大能建立多少连接呢以一台4GB内存的服务器为例
这种情况下那么能建立的连接数量主要取决于【内存的大小】因为如果是ESTABLISH状态的空闲连接不会消耗CPU虽然有TCP保活包传输但这个影响非常小可以忽略不计
我们知道一条ESTABLISH状态的连接大约消耗【3.3KB内存】那么通过计算得知一台4GB内存的服务器【可以建立100w的TCP连接】当然这里只是计算所有的连接都只建立连接但不发送和处理数据的情况如果真实场景中有数据往来和处理数据接收和发送都需要申请内存数据处理便需要CPU那便会消耗更高的内存以及占用更多的CPU并发不可能达到100w
上面讨论的都是进建立连接的理想情况在现实中如果有频繁的数据收发和处理比如压缩、加密等那么一台服务器能支撑1000连接都算好的了所以一台服务器能支撑多少连接还要结合具体的场景去分析不能光靠理论值去算。抛开业务逻辑单纯的谈并发没有太大的实际意义。
服务器的开销大头往往并不是连接本身而是每条连接上的数据收发以及请求业务逻辑处理
一台客户端机器最多能发起多少条连接
我们知道客户端每和服务端建立一个连接便会消耗掉client端一个端口。一台机器的端口范围是【0 ~ 65535】那么是不是说一台client机器最多和一台服务端机器建立65535个连接呢这65535个端口里还有很多保留端口可用端口可能只有64000个左右
由TCP连接的四元组特性可知只要四元组里某一个元素不同那么就认为这是不同的TCP连接。所以需要分情况讨论
【情况一】、如果一台client仅有一个IPserver端也仅有一个IP并且仅启动一个程序监听一个端口的情况下client端和这台server端最大可建立的连接条数就是 65535 个。
因为源IP固定目标IP和端口固定四元组中唯一可变化的就是【源端口】【源端口】的可用范围又是【0 ~ 65535】所以一台client机器最大能建立65535个连接
【情况二】、如果一台client有多个IP假设客户端有 n 个IPserver端仅有一个IP并且仅启动一个程序监听一个端口的情况下一台client机器最大能建立的连接条数是n * 65535 个
因为目标IP和端口固定有 n 个源IP四元组中可变化的就是【源端口】 【源IP】【源端口】的可用范围又是【0 ~ 65535】所以一个IP最大能建立65535个连接那么n个IP最大就能建立 n * 65535个连接了
以现在的技术给一个client分配多个IP是非常容易的事情只需要去联系你们网管就可以做到。
【情况三】、如果一台client仅有一个IPserver端也仅有一个IP但是server端启动多个程序每个程序监听一个端口的情况下比如server端启动了m个程序监听了m个不同端口一台client机器最大能建立的连接数量为65535 * m
源IP固定目标IP固定目标端口数量为m个可变化的是源端口而源端口变化范围是【0 ~ 65535】所以一台client机器最大能建立的TCP连接数量是 65535 * m个
其余情况类推但是客户端的可用端口范围一般达不到65535个受内核参数net.ipv4.ip_local_port_range限制如果要修改client所能使用的端口范围可以修改这个内核参数的值。
所以不光是一台server端可以接收100w个TCP连接一台client照样能发出100w个连接