zoukankan      html  css  js  c++  java
  • 21-b并发tcp连接数与文件描述符

    https://www.cnblogs.com/hukey/p/5582386.html【 Linux 】单台服务器上并发TCP连接数

    https://blog.csdn.net/tsh123321/article/details/88990825 TCP连接数和文件描述符耗尽分析

    client最大连接数 min{单进程文件描述符限制, 本地端口65535}

    server最大连接数 min{单进程文件描述符限制,2的32次方(ip数) * 2的16次方(port数)}

    https://www.cnblogs.com/DengGao/p/file_symbol.html 文件描述符与socket连接,本文详细介绍了文件描述符如何工作

    https://www.jianshu.com/p/ab053e82af78  java.net.SocketException: 打开的文件过多

    https://blog.csdn.net/sunny05296/article/details/54952009  设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别

    1 每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的连接到来返回给我们的错误是"Socket/File:Can't open so many files"      

    2 【用户级】执行 ulimit -n 输出1024,说明对于一个进程而言最多只能打开1024个文件,所以你要采用此默认配置最多也就可以并发上千个TCP连接。可以改

    3 操作系统上端口号1024以下是系统保留的,从1024-65535是用户使用的,由于没有tcp连接都要占用一个端口号,所以我们最多可以使用60000多个并发连接,这是对客户端的理解。对服务端无限制

    4 因此server端tcp连接4元组中只有remote ip 和 remote port 是可变的,因此最大tcp连接为客户端ip数 * 客户端port数。 对于ipv4,不考虑ip地址等因素,最大tcp连接约为2的32次方(ip数) * 2的16次方(port数),也就是  server端:单机最大tcp连接数约为:2的48次方

    5 /proc/sys/net/ipv4/tcp_rmem -》 socket buf;/proc/sys/fs/file-nr -》file number 【系统级】 已分配/已分配未使用/最大

    Linux下一切都是文件,包括输入输出设备、网络连接、socket、管道等;与文件打开数最相关的是文件描述符(有的人喜欢称作文件标识符,英文为file descriptor),文件打开数的实质就是文件描述符的数量

    7 查看当前进程的文件打开数:lsof -p 16075 | wc –l;查看当前端口的文件打开数:lsof -i:80 | wc -l;查看当前所有进程文件打开数:lsof | wc -l

    8 一个文件可以被多个进程打开,lsof所列出来的是每个进程所打开的文件,所以lsof的数值比file-nr要大很正常

     

    9

      mac linux
    用户级限制读 ulimit -n/a ulimit -n/a
      sysctl -a | grep kern.maxfilesperproc  
    系统级限制读 sysctl -a | grep kern.maxfiles cat /proc/sys/fs/file-max
        sysctl -a | grep fs.file-max
    用户级当前读 lsof -p port | wc -l(不准) lsof -p port | wc -l(不准)23
    系统级当前读 lsof | wc -l(不准) lsof | wc -l(不准)
        cat /proc/sys/fs/file-nr
        sysctl -a | grep fs.file-nr
     用户级限制写  ulimit -n xxxxx(临时)  /etc/security/limits.conf * soft nofile 100001* hard nofile 100002
     系统级限制写    /etc/sysctl.conf里定义fs.file-max;sysctl -p
  • 相关阅读:
    Java中class的前面添加public和不添加public有什么区别?
    java中构造函数和一般函数的区别
    Java里的new
    【Python】正则表达式
    【Java】仿真qq尝试:用户注册(二)
    【Java】流与文件(端口 & 文件读写对象)
    【Java】仿真qq尝试:用户注册(一)
    【Java】仿真qq尝试:聊天界面 && 响应用户输入
    【JavaScript】canvas实现一个小游戏
    【JavaScript】键盘控制小球
  • 原文地址:https://www.cnblogs.com/silyvin/p/12072004.html
Copyright © 2011-2022 走看看