一台机器上能创建多少条TCP连接?

如果在不考虑服务器的内存和文件句柄资源的情况下,理论上一个服务端进程最多能支持约为 2 的 48 次方(2^32 (ip数) * 2^16 (端口数),约等于两百多万亿!

但是在实际中是支持不了这个数值的,每个TCP连接都是一个文件,会占用文件句柄资源,也会占用一定的内存空间。

图片[1]-一台机器上能创建多少条TCP连接?-不念博客

一台服务器是可以有多个服务端进程的,每个服务端进程监听不同的端口,当然所有65535个端口你都可以用来监听一遍,这样理论上线就到了2的32次方(ip数)×2的16次方(port数)×2的16次方(服务器port数)个,这个基本相当于无穷个了。

但是Linux每维护一条TCP连接都要花费内存资源的,每一条静止状态(不发送数据和不接收数据)的 TCP 连接大约需要吃 3.44K 的内存,那么 8 GB 物理内存的服务器,最大能支持的 TCP 连接数=8GB/3.44KB=2,438,956(约240万)。

实际过程中的 TCP 连接,还会进行发送数据和接收数据了,那么这些过程还是会额外消耗更多的内存资源的,并发很难达到百万级别。

(0)
WebMasterJohnWebMasterJohn

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注