TCP 的 4 元组里边规定的
源 ip:源端口:目标 ip:目标端口
来标识一个 TCP 连接,
如果这个大内网使用同一个出口 ip ,同时访问同一个 ip 的 80 端口,会发生什么?
1
soulzz 2022-02-24 15:51:39 +08:00
不考虑带宽因素:
服务器配置不行或者网页加载非常慢的话会造成 time_wait 实际上如果是个静态网页,一点问题没有 考虑带宽因素: 带宽打满,cpu100%,卡死 带宽不是瓶颈时的解决方法,SLB 分流 带宽是瓶颈的解决方法,加带宽 |
2
jifengg 2022-02-24 15:53:21 +08:00
如果目标 IP 只有一台机器,且 ip_local_port_range 为 n~n+1000 ,那么只会有最多 1000 个链接建立成功。
因为你是同一个出口 ip ,对于目标机器来说你就是一个大整体。 如果有两个出口 ip ,这两个出口 ip 都可以和目标机器建立 1000 个链接。 |
3
soulzz 2022-02-24 15:57:16 +08:00
看来我的理解出现了偏差
|
4
haython OP @soulzz 配置和带宽都不是问题,我想知道的是连接能不能建立成功
毕竟源 ip ,目标 ip 和目标端口是固定的,所以理论上是不是同时最多只能 65535 个连接?那后续的几万个发起请求的,会发生什么 |
5
czfy 2022-02-24 16:01:05 +08:00
这是看上了哪个超过 10 万员工的互联网企业,准备干点啥?
(狗头 |
6
soulzz 2022-02-24 16:10:40 +08:00
概括一下问题:
城域网内,有且只有一个出口 ip , 网内有十万或者几十万台设备, 同时对城域网外的同一 ip 端口发起请求 |
7
haython OP @jifengg 你说的这个 ip_local_port_range 是指的出口路由的,还是发起连接的一个内网机器的?
如果是出口路由的,那内网机器可能并不知道,还会照常发起请求,那在出口路由给拦截回来? |
9
soulzz 2022-02-24 16:15:32 +08:00 1
@haython 不是 你了解一下 java 的 netty nio ,服务器端只需要监听一个端口,同时处理几万个请求没问题
你的问题关键点在于出口 ip 是一个时,同时往局域网外的同一 ip 端口发请求,这样可用的请求端口就少了,我猜这种情况也不会是简单的分配未使用端口,http 请求结束再回收,没有 keep-alive 再开个脑洞,如果局域网内的几十万台设备,同一出口 ip,同时请求局域网外的同一 ip 端口,建立 tcp 长连接 这时候会发生什么 |
10
Tianao 2022-02-24 16:16:22 +08:00
“如果这个大内网使用同一个出口 ip ,同时访问同一个 ip 的 80 端口,会发生什么?“
这个大内网的出口 NAT 网关会首先因为地址池可用端口枯竭而无法建立新的连接。 |
12
jifengg 2022-02-24 16:39:55 +08:00 1
@haython 都不是,指的是目标 IP 所在的机器的配置。
关于这个配置,你自己搜索一下,有很多详细的解析。这篇文章很有帮助: https://mozillazg.com/2019/05/linux-what-net.ipv4.ip_local_port_range-effect-or-mean.html 这个经常的压测的时候会碰到。 |
13
soulzz 2022-02-24 16:43:29 +08:00
看了一下出口的问题,并发请求量级到了这个级别出口不会只有单 ip
|
15
haython OP @soulzz 正常情况肯定不是单出口 ip ,但如果在只有一个 ip 的情况下,对某个长连接服务做并发压测呢[狗头]
其实,我想知道的是数据是怎么过去的,中间都有哪些设备,哪些配置会影响并发连接数 |
16
echoo00 2022-02-25 15:31:23 +08:00
内网 IP 访问外网需要做 NAT ,单个 IP 最多 65535 个端口,所以 10 万台机器不可能同时都出去,会有些机器访问不到互联网。
|