您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

一台服务器​最大并发 TCP 连接数多少

时间:2023-10-04 16:37:43  来源:今日头条  作者:Linux系统运维

以一道运维面试题开局:

你接触过的单机最大并发数是多少?

操作系统最大文件打开数是65535,服务器又是怎么做到支持10w并发的?

你认为当前正常配置的服务器物理机最大并发数可以到多少?

说说你的理解与分析

作为一个运维人员拿到一台服务器,需要完成哪些基线配置、内核优化参数你一定可以有理有据至少说出一二,但若要问题原理为何、凭什么并发与最大文件打开数有关又不完全有关,这是这篇文章给大家分享的。

如何表示一个TCP连接

四元组({localip, localport,remoteip,remoteport}): 在TCP连接中,最常用的标识方式是四元组,包括源IP地址、源端口号、目标IP地址和目标端口号。这四个值唯一地标识了一个TCP连接。这被称为源IP地址、源端口号、目标IP地址和目标端口号的组合。

Socket句柄(五元组): 在编程中,TCP连接通常通过套接字(Socket)来表示和标识。一个Socket句柄通常由以下组成:协议(如TCP)、本地IP地址、本地端口号、远程IP地址和远程端口号。这些信息用于在编程中标识和操作TCP连接。

连接标识符: 在某些情况下,应用程序可能使用连接标识符或会话ID来唯一标识连接。这个标识符可以是应用程序自己定义的,用于跟踪和管理连接。

TCP状态: 除了上述的标识方式,TCP连接还可以通过其当前状态来标识。TCP协议定义了多种状态,如建立连接、数据传输、连接关闭等。连接的状态可以用来识别连接的当前阶段。

明确了四元组来标识一个tcp连接,那么这样的tcp连接理论最大值应该取决于 源地址、源端口、目的地址、目的端口等四个维度的最大值来定义。

什么决定了服务器的最大并发数

 

一台服务器​最大并发 TCP 连接数多少

 

如图,理论最大并发数=服务器唯一五元组,端口、地址、协议都是有上限的,这个值不难算出。

作为客户端他的最大连接数是多大

client每次发起tcp连接请求时,除非指定源端口,通常会随机选出来一个空闲的本地端口(基本上你看到都是五位数以上),该端口是独占不存在复用。因此操作系统端口数最多65536,0 又不能用,最多就剩下65535个,因此在纯客户端的情况下,不管连一样的服务器地址和端口或者不一样的服务器端口他最大值始终都受限制与客户端本地的端口数量,然后一般1024以下又不让你用 所以客户端的最大连接数最多不会超过65000,理论就是2^16个.

关于这个客户端的最大连接数还有一个场景是NAT客户端的场景,同一个NAT网络下,所有终端都是通过路由NAT了一个公网地址+端口进行访问,这种情况下,所有终端的最大连接数合计应该是<65535的。

作为服务端的最大连接数是多大

那么对于服务器端来说,我们以TCP连接为例,我们假定单进程、单端口(注意这个前提,要考),单网卡。 这个条件下 四元组中两项固定,那么服务器端的最大连接数理论值应该就是客户端的IP地址数量客户端的端口数量即2^32*2^16=2^48个。

但是,但是来了

每一条连接都是要消耗系统资源的,一个socket连接的建立需要消耗内存、需要建立socket,每个socket又都需要消耗一个文件描述符,文件描述符消耗的就是文件打开数,因此,如果你的最大文件打开数是1024,那么你的socket最多也就1024。

另外,一个socket是可以建立多个连接的,一个tcp连接标记为一个四元组,只要四个元素有一个不一样那么就不是一个连接。

比如:

服务器ip是214.117.11.2,监听80端口;

115.116.117.118 发来一条请求源端口为11111,这条tcp连接的四元组是(214.117.11.2,80,115.116.117.118,11111)

115.116.117.118 发来第二条请求,端口11112,新的四元组(214.117.11.2,80,115.116.117.118,11112).那么你的80端口就有了两条连接;

若115.116.117.118 发来第三条请求,源端口还是11111,这个链接肯定无法建立,因为源端口不可复用,当然你换udp 是不是就可以了,因为udp 跟tcp 属于不同协议,并不共享端口,协议不同,端口相同在操作系统中是允许存在。所以真正要标识一个链接是五元组,比四元组多了一个协议。

一台服务器​最大并发 TCP 连接数多少

 

综上所述,现实工作中,由于存在端口复用的情况,服务器同时支持tcp连接数跟端口的65535 没有一一对应关系,而进程又跟文件描述符是一一对应关系,文件描述符消耗最大文件打开数,同时需要内存来维护。因此最大并发数受最大文件打开数、内存影响。

最大文件打开数在fs.file-max、nofile、/etc/systemd/system.conf中的关系

  • file-max 系统最大打开文件描述符数,内核级,系统级,所有的限制都要在这个范围之下

/proc/sys/fs/file-max中指定了系统范围内所有金策会给你可打开的文件句柄的数量限制(系统级别、kernel-level)

The value in file-max denotes the maximum number of file handles that the linux kernel will allocate

临时性设置:

echo 6553500 > /proc/sys/fs/file-max

永久:

fs.file-max=6553500

nr_open 单个进程可分配的最大文件数

为什么会提到这个参数,毕竟很少有人真的去改一个最大文件打开数超过1024*1024=1048576.更别说有人会去测试,比如最大文件打开数超过这个值,测试(慎用,建议测试环境使用,在你不知道这个脚本是什么功能的前提下,不要复制直接运行):

for i in `seq 100000 10000000`;do ulimit -n $i; [[ $? != 0 ]] && break;done

跟踪原因就会发现,这个实际的ulimit值还受nr_open的限制。

这里贴下官网linux内核的解释:

file-max:

The value in file-max denotes the maximum number of file-handles that the linux kernel will allocate. When you get lots of error messages about running out of file handles, you might want to increase this limit

nr_open

This denotes the maximum number of file-handles a process can allocate. Default value is 1024*1024 which should be enough for most machines. Actual limit depends on RLIMIT_NOFILE resource limit.

根据解释,其实file-max是文件句柄,而非FD(文件描述符)。因此 file-max是内核可分配的最大文件数,nr_open是单个进程可分配的最大文件数。

 

  • nofile 是用户或进程级别的文件描述符限制,可以通过ulimit来修改。

临时修改:

ulimit -n 65535

永久(要重启服务器):

# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
  • /etc/systemd/system.conf 中的DefaultLimitNOFILE 是systemd级别的限制。

这里可能有运维同学会遇到这种问题:改了ulimit改了nofile 改了fs.file-max,但是使用yum安装的服务,却一直报文件打开数不足,服务器重启就是不生效。原因是通过sytemd管理的服务,需要在这里也要修改最大文件打开数。当然比如MySQL 自身的mysqld.service中也可以来配置这个参数实现修改。

(为什么出现这样的原因呢,主要看systemd服务本身是什么状态,是系统实例还是用户实例,通常都是系统实例,把--system换位--user 即可。)回到上面的问题,mysql是通过systemd管理的所以需要修改system.conf中的最大文件打开数,重启服务即可。如果还有限制检查
/usr/lib/systemd/system/mysqld.service

 

一台服务器​最大并发 TCP 连接数多少

 

结论:

所有进程打开的文件描述符数量不能超过/proc/sys/fs/file-max

单个进程打开的文件描述符数不能超过user limit 中nofile soft limit

nofile 的soft limit 不能超过hard limit

nofile 的hard limit 不能超过 /proc/sys/fs/nr_open

 



Tags:TCP   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01  Search: TCP  点击:(59)  评论:(0)  加入收藏
从零开始学习Python网络编程:探索TCP协议与实例演示!
Python 是一种高级的编程语言,拥有广泛的网络编程库。这些库允许 Python 开发者能够使用 TCP 和其他网络协议进行通信。在本文中,我们将探讨 TCP 协议,并通过一个简单的例子来...【详细内容】
2023-11-23  Search: TCP  点击:(219)  评论:(0)  加入收藏
TCP分段技术:克服IP和MAC层内存限制的关键
IP和MAC层在发送数据包时都面临内存受限的问题,这就导致它们对消息的长度有所限制。为了克服这个限制,TCP在将数据传递给IP层之前,需要将可变长度的字节打包成多个段,确保每个段...【详细内容】
2023-11-22  Search: TCP  点击:(234)  评论:(0)  加入收藏
TCP发送窗口、接收窗口以及其工作原理
可用窗口的计算是理解TCP滑动窗口的关键,要了解可用窗口的计算,我们需要理解三个指针&mdash;&mdash;SND.UNA、SND.NXT和RCV.NXT。上面的图表是从发送方的角度拍摄的快照。我们...【详细内容】
2023-11-13  Search: TCP  点击:(350)  评论:(0)  加入收藏
Wireshark抓包分析TCP协议:三次握手和四次挥手
前言 面试中我们经常会被问到TCP协议的三次握手和四次挥手的过程,为什么总喜欢问这个问题呢? 其实我们平时使用的很多协议都是应用层协议,比如HTTP协议,https协议,DNS协议,FTP协议...【详细内容】
2023-11-01  Search: TCP  点击:(233)  评论:(0)  加入收藏
一台服务器​最大并发 TCP 连接数多少
以一道运维面试题开局:你接触过的单机最大并发数是多少?操作系统最大文件打开数是65535,服务器又是怎么做到支持10w并发的?你认为当前正常配置的服务器物理机最大并发数可以到多...【详细内容】
2023-10-04  Search: TCP  点击:(71)  评论:(0)  加入收藏
C# 如何判断某个 TCP 端口是否被占用?
在C#中使用TcpClient或者其他通用的方式建立的Socket,该如何判断这个端口是否被占用?比如下面的代码:TcpClient tc = new TcpClient(ip,port);在C#中,可以使用 System.Net.Netwo...【详细内容】
2023-09-26  Search: TCP  点击:(53)  评论:(0)  加入收藏
网络层协议详解:理解TCP/IP、HTTP、FTP等协议的功能与工作原理
在计算机网络中,网络层是计算机通讯的重要组成部分,它负责处理数据包的传输和路由,是实现网络通信的必不可少的组件之一。网络层引入了三个协议:IP协议、ARP协议和路由协议。IP...【详细内容】
2023-09-06  Search: TCP  点击:(253)  评论:(0)  加入收藏
TCP与UDP协议:网络通信中的两大重要角色
引言在这个像点点滴滴组成的虚拟宇宙中,网络通信就像是我们的超级高速公路系统,让信息在世界间飞速穿梭。想象一下,如果网络是一条繁忙的交通道路,那么协议就是交通信号灯,确保数...【详细内容】
2023-09-01  Search: TCP  点击:(229)  评论:(0)  加入收藏
TCP、UDP是如何流量、拥塞控制的?今天一口气讲透!
一、TCP TCP首部 流量控制 拥塞控制 三次握手,四次挥手 tcp 怎样保证数据正确性?流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度1、TCP首部源端...【详细内容】
2023-07-18  Search: TCP  点击:(252)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(11)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(31)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(34)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(37)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(69)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(59)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(40)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(143)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(48)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(74)  评论:(0)  加入收藏
站内最新
站内热门
站内头条