创建大量TCP连接时会受到什么因素的限制?

1.文件描述符资源

用户级限制
我们可以使用ulimit命令查看系统允许当前用户进程打开的文件数限制:

ulimit -n 

在这里插入图片描述

  我们可以使用 ulimit -n 文件数 来修改

不过这种设置是临时的,只在当前的session中有效。为永久修改用户级文件描述符数限制,可以在/etc/security/limits.conf文件中加入如下两项:

  • hard nofile max-file-number 硬限制
  • soft nofile max-file-number 软限制

内核参数
几乎所有的内核模块,包括内核核心模块和驱动程序,都在 /proc/sys文件系统下提供了某些配置文件以供用户调整模块的属性和行为。通常一个配置文件对应一个内核参数,文件名就是参数的名字,文件的内容是参数的值。

1. /proclsys/fs目录下的部分文件(这个目录下的内核参数都与文件系统相关)

  • /proc/sys/fs/file-max,系统级文件描述符数限制。

    一般修改/proc/sys/fs/file-max后,应用程序需要把/proc/sys/fs/inode-max设置为新/proc/sys
    /fs/file-max值的3~4倍,否则可能导致i节点数不够用。
    
  • /proc/sys/fs/epoll/max_user_watches,一个用户能够往epoll内核事件表中注册的事件的总量。

    它是指该用户打开的所有epoll实例总共能监听的事件数目,而不是
    单个epoll实例能监听的事件数目。往epoll内核事件表中注册一个
    事件,在32位系统上大概消耗90字节的内核空间,在64位系统上则
    消耗160字节的内核空间。所以,这个内核参数限制了epoll 使用
    的内核内存总量。
    

    2/proclsys/net目录下的部分文件(这个目录下的内核参数都与网络相关)

  • /proc/sys/net/core/somaxconn

    指定listen监听队列里,能能监听的socket 的最大数目。
    
  • /proclsys/net/ipv4/tcp_max_syn_backlog

    处于SYN_RECV的TCP最大连接数
    
  • /proc/sys/net/ipv4/tcp_wmem

    它包含3个值,分别指定一个socket 的TCP写缓冲区的最小值、默
    认值和最大值。
    
  • /proc/sys/nct/ipv4/tcp_rmem

    它包含3个值,分别指定一个socket的 TCP读缓冲区的最小值、默
    认值和最大值。
    

2.端口资源
系统为进程分配的端口号也是有限的。

通过 cat /proc/sys/net/ipv4/ip_local_port_range 查看在这里插入图片描述
上面表示的是只有 32768~60999才可以使用。
3.内存资源
每个TCP连接都需要占用内存资源,如读写缓存区,在文件管理系统中给它分配struct file,struct dentry等等也要占用内存空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值