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

posted on 2019-12-20 11:01  silyvin  阅读(794)  评论(0编辑  收藏  举报