最多能创建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次方。

实际可用端口范围可以如下查看:

[root]# cat /proc/sys/net/ipv4/ip_local_port_range 
1024 65000

文件描述符:

每建立一个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-maxulimit都需要设置,否则会出现文件描述符耗尽的问题。

线程资源:

按照每个连接,启动一个线程的方式,TCP连接个数受线程个数限制,可以用IO复用方式,一个线程管理多个TCP连接。

内存资源:

每个TCP连接本身,以及这个连接所用到的缓冲区,都是需要占用一定内存。

CPU资源:

这个很好理解。

参考文献:

  1. 限制服务器最大并发连接数
  2. 如何优雅的处理 accept 出现 EMFILE 的问题
  3. TCP连接数和文件描述符耗尽分析
  4. 设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别
  5. 最多能创建多少个TCP连接?
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值