{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

一台主机上只能保持最多65535个TCP连接吗?

BryanBryan 回答0 收藏1
收藏问题

10条回答

dreambei

dreambei

回答于2022-06-28 11:56

答案:不一定!

有以下几种情况:

1. 如果是服务端,如nginx,监听在某个端口如80端口,那么理论上只受最大文件打开数的限制(可以改的很大),可以很轻松超过65535个tcp连接,百万?千万?

2. 如果是客户端,那不好意思,除了受最大文件打开数限制,还受本地端口限制,理论上最多是65535个tcp连接

评论0 赞同0
  •  加载中...
Dr_Noooo

Dr_Noooo

回答于2022-06-28 11:56

对网络库NewLife.Net进行单机百万级长连接测试,并持续收发数据,检测网络库稳定性。

压测结果,8月2日下午达到404万。

共使用6台12C96G高配服务器,1台作为服务端,5台作为测试端,各测试端绑定20个IP发起100万连接,每个连接60秒请求一次服务端并接收响应。

[NewLife.Net]单机400万长连接压力测试

https://www.yuque.com/smartstone/blood/net_100w

评论0 赞同0
  •  加载中...
GitChat

GitChat

回答于2022-06-28 11:56

有65535个端口,但每个端口可以有很多tcp连接

举个例子,一个80端口的http服务器,有100个人同时访问,那80端口就有100个tcp连接

评论0 赞同0
  •  加载中...
MingjunYang

MingjunYang

回答于2022-06-28 11:56

linux默认连接数为1024,用ulimit修改文件打开数量,每个TCP长连接需要建立一个句柄,也就是打开一个文件。linux中一切皆文件。
很多人动不动就号称几百万并发,那是他根本就不懂linux的socket是如何运作的。
linux的连接数受到socket队列长度和最大文件句柄数限制,可以用内核微调来优化,一般最高不超过65536。

评论0 赞同0
  •  加载中...
array_huang

array_huang

回答于2022-06-28 11:56

见本人技术博客https://www.iteye.com/blog/wanshi-1256282。简单来说看这台主机的角色,如果这台机器纯做TCP客户端,每个客户端要占一个本地端口,那最多只有65535个TCP链接(除去0端口)。如果是做TCP Server,在IPv4地址条件下,一个端口理论上(内存等资源足够大情况下)最大能接受2^48个客户端链接,如果这台主机用所有的65535个端口做各种tcp server,那最大链接数还要乘以65535。如果它既做TCP客户端又做服务端(它消费其他server的服务,又提供其他服务),那就综合计算。

评论0 赞同0
  •  加载中...
zsirfs

zsirfs

回答于2022-06-28 11:56

理论上不止,只能说和一个远端IP最多这么多,换IP还可以建立新的TCP连接

评论0 赞同0
  •  加载中...
Keagan

Keagan

回答于2022-06-28 11:56

一块网卡最大65535,一台服务器可以配置多块物理网卡。

当然Linux下也可以一个网卡创建多个虚拟IP。

那么有多少个IP就有多少个65535。

评论0 赞同0
  •  加载中...
AlphaWatch

AlphaWatch

回答于2022-06-28 11:56

五元组确定一个,你确定一个tcp,确定一个主机ip,还有65535个你的端口还有65535对方的端口,还有二的32次方的ip,有些端口和ip不能用,所以取决你的内存

评论0 赞同0
  •  加载中...
cloud

cloud

回答于2022-06-28 11:56

tcp服务器能处理的连接数实际是由五元组来确定的,更准确的说是由客户端的ip+port来决定连接数的,对于ipv4地址2^32,port是2^16,所以理论的连接数最多是2^48。但实际情况中这个和设备的内存,一条tcp连接占用的内存有关,所以,要切记,65535并不是单机服务器处理的连接数上限。65535硬要说是上限,那就是单机开放不同客户端的连接数。实际这也是不确切的,单机情况下,可以通过设置虚拟ip来突破单机65535这个上限。

以上是网上找的资料,来自csdn带着眼镜看不清的论点,感觉有些道理,希望对你有帮助。

评论0 赞同0
  •  加载中...
KaltZK

KaltZK

回答于2022-06-28 11:56

65535是16进制的FFFF,这个和连接数没有关系,它的意思是一台电脑对外开放的端口可以有65535个端口号,一个端口可以连接的客户端取决于服务器的性能,也许是10个,也可能100万个连接

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<