一个大内网,假如里边设备超过 10 万台,同时访问一个 ip,会有问题吗?

2022-02-24 15:28:10 +08:00
 haython

TCP 的 4 元组里边规定的

源 ip:源端口:目标 ip:目标端口

来标识一个 TCP 连接,

如果这个大内网使用同一个出口 ip ,同时访问同一个 ip 的 80 端口,会发生什么?

1728 次点击
所在节点    问与答
16 条回复
soulzz
2022-02-24 15:51:39 +08:00
不考虑带宽因素:
服务器配置不行或者网页加载非常慢的话会造成 time_wait
实际上如果是个静态网页,一点问题没有
考虑带宽因素:
带宽打满,cpu100%,卡死

带宽不是瓶颈时的解决方法,SLB 分流
带宽是瓶颈的解决方法,加带宽
jifengg
2022-02-24 15:53:21 +08:00
如果目标 IP 只有一台机器,且 ip_local_port_range 为 n~n+1000 ,那么只会有最多 1000 个链接建立成功。
因为你是同一个出口 ip ,对于目标机器来说你就是一个大整体。

如果有两个出口 ip ,这两个出口 ip 都可以和目标机器建立 1000 个链接。
soulzz
2022-02-24 15:57:16 +08:00
看来我的理解出现了偏差
haython
2022-02-24 15:58:08 +08:00
@soulzz 配置和带宽都不是问题,我想知道的是连接能不能建立成功
毕竟源 ip ,目标 ip 和目标端口是固定的,所以理论上是不是同时最多只能 65535 个连接?那后续的几万个发起请求的,会发生什么
czfy
2022-02-24 16:01:05 +08:00
这是看上了哪个超过 10 万员工的互联网企业,准备干点啥?
(狗头
soulzz
2022-02-24 16:10:40 +08:00
概括一下问题:
城域网内,有且只有一个出口 ip ,
网内有十万或者几十万台设备,
同时对城域网外的同一 ip 端口发起请求
haython
2022-02-24 16:13:08 +08:00
@jifengg 你说的这个 ip_local_port_range 是指的出口路由的,还是发起连接的一个内网机器的?
如果是出口路由的,那内网机器可能并不知道,还会照常发起请求,那在出口路由给拦截回来?
haython
2022-02-24 16:13:20 +08:00
@soulzz 精辟!
soulzz
2022-02-24 16:15:32 +08:00
@haython 不是 你了解一下 java 的 netty nio ,服务器端只需要监听一个端口,同时处理几万个请求没问题
你的问题关键点在于出口 ip 是一个时,同时往局域网外的同一 ip 端口发请求,这样可用的请求端口就少了,我猜这种情况也不会是简单的分配未使用端口,http 请求结束再回收,没有 keep-alive

再开个脑洞,如果局域网内的几十万台设备,同一出口 ip,同时请求局域网外的同一 ip 端口,建立 tcp 长连接
这时候会发生什么
Tianao
2022-02-24 16:16:22 +08:00
“如果这个大内网使用同一个出口 ip ,同时访问同一个 ip 的 80 端口,会发生什么?“

这个大内网的出口 NAT 网关会首先因为地址池可用端口枯竭而无法建立新的连接。
haython
2022-02-24 16:19:59 +08:00
@Tianao 感谢,是我想要找的答案,我去了解一下相关的资料
jifengg
2022-02-24 16:39:55 +08:00
@haython 都不是,指的是目标 IP 所在的机器的配置。
关于这个配置,你自己搜索一下,有很多详细的解析。这篇文章很有帮助: https://mozillazg.com/2019/05/linux-what-net.ipv4.ip_local_port_range-effect-or-mean.html

这个经常的压测的时候会碰到。
soulzz
2022-02-24 16:43:29 +08:00
看了一下出口的问题,并发请求量级到了这个级别出口不会只有单 ip
haython
2022-02-24 16:47:46 +08:00
@jifengg 你说的这些我都知道,你发的这个文章是对本机进行的设置,不是目标 ip 所在的机器
haython
2022-02-24 17:06:14 +08:00
@soulzz 正常情况肯定不是单出口 ip ,但如果在只有一个 ip 的情况下,对某个长连接服务做并发压测呢[狗头]
其实,我想知道的是数据是怎么过去的,中间都有哪些设备,哪些配置会影响并发连接数
echoo00
2022-02-25 15:31:23 +08:00
内网 IP 访问外网需要做 NAT ,单个 IP 最多 65535 个端口,所以 10 万台机器不可能同时都出去,会有些机器访问不到互联网。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/836168

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX