前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多个客户端连接服务器占用多余服务的端口号吗?

多个客户端连接服务器占用多余服务的端口号吗?

作者头像
程序员小王
发布2021-03-04 14:30:22
3.7K0
发布2021-03-04 14:30:22
举报
文章被收录于专栏:架构说架构说

故事背景

服务部署重新调整,原来业务业务是长连接,然后通过升级到通过vip负载 ,变成短连接,就担心出现大量time_wait 造成端口号沾满。然后和别人讨论起来。被别人拒绝 让确定业务具体属性,说不需要调整。

最后发现自己基本理论忘记了。

多个客户端连接服务器占用多余服务的端口号吗?

再次回顾

关于 TCP 并发连接的几个思考题与试验

第一道初级题目是:

有一台机器,它有一个 IP,上面运行了一个 TCP 服务程序,程序只侦听一个端口,问:从理论上讲(只考虑 TCP/IP 这一层面,不考虑IPv6)这个服务程序可以支持多少并发 TCP 连接?答 65536 上下的直接刷掉。

具体来说,这个问题等价于:有一个 TCP 服务程序的地址是 1.2.3.4:8765,问它从理论上能接受多少个并发连接?

第二道进阶题目是:

一台被测机器 A,功能同上,同一交换机上还接有一台机器 B,如果允许 B 的程序直接收发以太网 frame, 问:让 A 承担 10 万个并发 TCP 连接需要用多少 B 的资源?100万个呢?

从讨论的结果看,很多人做出了第一道题,而第二道题几乎无人问津。

这里先不公布答案(第一题答案见文末),让我们继续思考一个本质的问题一个 TCP 连接要占用多少系统资源。

在现在的 Linux 操作系统上,如果用 socket()/connect() 或 accept() 来创建 TCP 连接,那么每个连接至少要占用一个文件描述符(file descriptor)。为什么说“至少”?因为文件描述符可以复制,比如 dup();也可以被继承,比如 fork();这样可能出现系统里边同一个 TCP 连接有多个文件描述符与之对应。

据此,很多人给出的第一题答案是:并发连接数受限于系统能同时打开的文件数目的最大值。这个答案在实践中是正确的,却不符合原题意。

版权声明:本文为CSDN博主「陈硕」的原创文章, 遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/solstice/article/details/6579232

答案

在真实的 Linux 系统中,可以通过调整内核参数来支持上百万并发连接。https://github.com/ideawu/c1000k 服务器是没有那么端口号。增加一个连接,服务器并多占用一个端口。服务器端口暴露给客户端只有一个9821固定的

为什么一个端口能建立多个TCP连接,同一个端口也就是说 server ip和server port 是不变的。那么只要[client ip 和 client port]不相同就可以了。能保证接唯一标识[server ip, server port, client ip, client port]的唯一性。

第一道题的答案:(没看懂呢)

在只考虑 IPv4 的情况下,并发数的理论上限是 2*48。考虑某些 IP 段被保留了,这个上界可适当缩小,但数量级不变。实际的限制是操作系统全局文件描述符的数量,以及内存大小。

一个 TCP 连接有两个 end points,每个 end point 是 {ip, port},

题目说其中一个 end point 已经固定,那么留下一个 end point 的自由度,即 2 * 48。

客户端 IP 的上限是 232 个 ,每个客户端IP发起连接的上限是 216,乘到一起得理论上限。

即便客户端使用 NAT,也不影响这个理论上限。(为什么?)

一台被测机器 A,功能同上,同一交换机上还接有一台机器 B,如果允许 B 的程序直接收发以太网 frame,问:让 A 承担 10 万个并发 TCP 连接需要用多少 B 的资源?100万个呢?

从讨论的结果看,很多人做出了第一道题,而第二道题几乎无人问津。

主要看发起方机器普端口上限是什么

客户端ip和端口的变化 ,如果压力测试,为什么从多个客户端,同时测试。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Offer多多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 故事背景
  • 关于 TCP 并发连接的几个思考题与试验
  • 答案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档