当前位置: 首页 > news >正文

一台服务器,最大支持的TCP连接数是多少?

一个服务端进程最大能支持多少条 TCP 连接?
一台服务器最大能支持多少条 TCP 连接?
一、原理
TCP 四元组的信息:源IP、源端口、目标IP、目标端口。
在这里插入图片描述

一个服务端进程最大能支持的 TCP 连接个数的计算公式:最大tcp连接数=客户端的IP数 * 客户端的端口数
对 IPv4,客户端的 IP 数最多为 2 的 32 次方,客户端的端口数最多为 2 的 16 次方。那么一个服务端进程理想情况下,最大的 TCP 连接数约为 2 的 48 次方(2^32 (ip数) * 2^16 (端口数),这数值是非常夸张的了,约等于两百多万亿。
服务端进程最大能支持的 TCP 连接数远不能达到理论上限,还会受到文件描述符、内存大小资源的限制,毕竟 socket 在 Linux 的视角其实就是文件资源,而且一个 socket 对象也会占用一定的内存资源。
限制因素:
文件描述符限制,每个 TCP 连接都是一个文件,如果文件描述符被占满了,会发生 Too many open files。Linux 对可打开的文件描述符的数量分别作了三个方面的限制:
系统级:当前系统可打开的最大数量,通过 cat /proc/sys/fs/file-max 查看;
用户级:指定用户可打开的最大数量,通过 cat /etc/security/limits.conf 查看;
进程级:单个进程可打开的最大数量,通过 cat /proc/sys/fs/nr_open 查看;
内存限制,每个 TCP 连接都要占用一定内存,操作系统的内存是有限的,如果内存资源被占满后,会发生 OOM。

二、计算tcp
因为Linux每维护一条TCP连接都要花费资源,处理连接请求,保活,数据的收发时需要消耗一些CPU,维持TCP连接主要消耗内存。
是考虑最大多少个连接,所以我们先不考虑数据的收发,那么TCP在静止的状态下,就不怎么消耗CPU了,主要消耗内存,而Linux上内存是有限的。首先,我们要知道一条处于 ESTABLISH 状态的 TCP 连接具体占用多大内存?一个 TCP 对象占用的大小,等于它所包含的一些数据结构占用大小的总和,也是就把上面这些数据结构的大小累加起来,就是一个 TCP 连接占用的大小了。
这里直接给大家一个结论,一条处于 ESTABLISH 状态的 TCP 连接占用的大小是 3.44 KB(0.81K+2.19K+0.19K+0.25K)。
在这里插入图片描述
每一条静止状态的TCP连接大约需要吃 3.44K 的内存。那么 8 GB 物理内存的服务器,最大能支持的 TCP 连接数=8GB/3.44KB=2,438,956(约240万)!当然, 实际过程中的 TCP 连接,肯定不是静止状态的,还会进行发送数据和接收数据了,那么这些过程还是会额外消耗更多的内存资源的,并发很难达到百万级别。

三、压测验证
3.1-postman
3.2-ab
3.3-jmeter

http://www.lryc.cn/news/311957.html

相关文章:

  • 微信小程序云开发教程——墨刀原型工具入门(编辑页面)
  • flutter打包app
  • 力扣543. 二叉树的直径
  • python网络爬虫教程笔记(1)
  • C# 异步返回类型详解
  • BAT等大厂必问技术面试题,【2024Android最新学习路线
  • 72. 编辑距离【leetcode】/动态规划难
  • 【MySQL】视图、索引
  • 反编译java生成的.class文件
  • Cookie 探秘:了解 Web 浏览器中的小甜饼
  • Python线性代数数字图像和小波分析之二
  • LC.exe”已退出,代码为 -1
  • springboot + jpa + 达梦数据库兼容 Mysql的GenerationType.IDENTITY主键生成策略
  • Redis优化与应用
  • 深入了解Kafka的文件存储原理
  • RabbitMQ 高级
  • 音视频开发之旅——音频基础概念、交叉编译原理和实践(LAME的交叉编译)(Android)
  • 直播美颜SDK开发指南:构建个性化的主播美颜工具
  • 羊大师揭秘,羊奶有哪些好处和不足呢?
  • 鸿蒙问题之CustomDialog后持久化@state数据崩溃
  • 微服务高性能通信技术-gRPC实战落地
  • 洛阳旅游攻略
  • 图论例题解析
  • 图解 TCP 拥塞控制
  • Nginx配置文件的整体结构
  • [SpringCloud] OpenFeign核心架构原理 (三)
  • elementUI Table组件点击取当前行索引
  • 组基轨迹建模 GBTM的介绍与实现(Stata 或 R)
  • 解决前端性能问题:如何优化大量数据渲染和复杂交互?
  • 【Vue3】深入理解Vue中的ref属性