一般我们都是在 Linux 系统下使用服务端,那么这个问题主要和 linux 系统挂钩。

从理论上 tcp 连接与四元组有关,那么只有四元组当中的一项发生改变,那么便可以建立新的 tcp 连接,那么可以建立的 tcp 连接数会非常的多。

但实际情况并不是这样,linux 系统中建立 tcp 协议需要为其分配内存和文件描述符,同时建立的 tcp 连接还需要占用带宽资源。如果这三项任意一项用完了,那么就无法建立新的 tcp 连接。

建立一个新的 tcp 连接需要占用 15-20KB 的内存,而每一个进程打开文件描述符系统默认有一个数值,但是这个数值是可以更改的,最后便是带宽资源,这一点根据所做的业务相关,视频类的业务对带宽的需求量更大。

1GB 的内存是 2^20KB15-20KB 当成 16KB 来处理的话也就是 2^4KB,也就是说 1GB 的内存可以建立 2^16 个连接。