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 【系统级】 已分配/已分配未使用/最大
6 Linux下一切都是文件,包括输入输出设备、网络连接、socket、管道等;与文件打开数最相关的是文件描述符(有的人喜欢称作文件标识符,英文为file descriptor),文件打开数的实质就是文件描述符的数量
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 |