最多能创建TCP连接个数
TCP连接个数受端口号、文件描述符、线程资源、内存资源、CPU资源的限制。
系统用一个四元组来唯一标识一个TCP连接:{local ip, local port,remote ip,remote port}
在local ip, local port固定、不考虑ip地址分类的情况下,最大tcp连接数约为2的32次方(ip数)×2的16次方(port数),也就是server端单机最大tcp连接数约为2的48次方。
实际可用端口范围可以如下查看:
每建立一个TCP连接,操作系统分配一个文件描述符,linux 对可打开的文件描述符的数量分别作了三个方面的限制:
系统级 :当前系统可打开的最大数量,通过 cat /proc/sys/fs/file-max 查看
用户级 :指定用户可打开的最大数量,通过 cat /etc/security/limits.conf 查看
进程级 :单个进程可打开的最大数量,通过 cat /proc/sys/fs/nr_open 查看
file-max 表示系统级别的能够打开的文件句柄的数量。是对整个系统的限制,并不是针对用户的。
ulimit -n 控制进程级别能够打开的文件句柄的数量。提供对shell及其启动的进程的可用文件句柄的控制。这是进程级别的。
对于服务器来说, file-max 和 ulimit 都需要设置,否则会出现文件描述符耗尽的问题。
按照每个连接,启动一个线程的方式,TCP连接个数受线程个数限制,可以用IO复用方式,一个线程管理多个TCP连接。
每个TCP连接本身,以及这个连接所用到的缓冲区,都是需要占用一定内存。
这个很好理解。
2023-07-25 广告