如果在不考虑服务器的内存和文件句柄资源的情况下,理论上一个服务端进程最多能支持约为 2
的 48
次方(2^32 (ip数) * 2^16 (端口数
),约等于两百多万亿!
但是在实际中是支持不了这个数值的,每个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 连接,还会进行发送数据和接收数据了,那么这些过程还是会额外消耗更多的内存资源的,并发很难达到百万级别。
© 版权声明
本站文章由不念博客原创,未经允许严禁转载!
THE END