TCP服务器最多支持多少客户端连接

发布时间:2024年01月20日

目录

一、理论数值

二、实际部署

?参考


一、理论数值

????????首先知道一个基础概念,对于一个 TCP 连接可以使用四元组(src_ip, src_port, dst_ip, dst_port)进行唯一标识。因为服务端 IP 和 Port 是固定的(如下图中的bind阶段),那么一个TCP服务器支持最多的连接数就是由客户端 IP 和 端口决定的了。

????????端口数在 TCP 传输协议中占两个字节,所以一共有 2 ^ 16 = 65535 个端口(未减去保留端口,假设数量为 m)。

????????IP 在 IP 网络协议中占四个字节,所以有 2 ^ 32 个网络地址(未减去广播地址、多播地址和私有地址,假设他们数量之和为 n)。

????????所有理论上 TCP 服务器支持 ( 2 ^ 32 - n ) * ( 2 ^ 16 - m )条连接,简单计算一下,理论上支持的 TCP 连接数是以亿为量级的。

? ? ? ? 下图是 TCP 服务器与客户端的交互过程。

二、实际部署

????????实际使用中,TCP 服务器支持的最大连接数受服务端内存和文件描述符的约束。

(1)一条处于 ESTABLISH 状态的 TCP 连接占用的大小是 3.44 KB,数据来源文末参考链接。

(2)服务器内每个 TCP 连接就是一个文件描述符,受如下 linux 系统参数的限制。

????????系统级:当前系统可打开的最大数量,通过? cat /proc/sys/fs/file-max?查看;

????????用户级:指定用户可打开的最大数量,通过? cat /etc/security/limits.conf?查看;

????????进程级:单个进程可打开的最大数量,通过?cat /proc/sys/fs/nr_open?查看;

?参考

https://mp.weixin.qq.com/s/l9ggXLAEHp4LTjd2Qsyqtg

文章来源:https://blog.csdn.net/qq_37437983/article/details/135723054
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。