一台服务器,最大支持的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.rhkb.cn/news/269748.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter函数助手函数--计数器详解

函数 作用 ${__counter(,)} 计数器,每次加1 ${__dateTimeConvert(,,,)} 时间格式转换 ${__intSum(,,)} 整数相加 ${__P(,)} 获取属性 ${__setProperty(,,)} 设置属性 ${__Random(,,)} 随机数 ${__threadNum} 线程编号 ${__time(,)} 获取当前时间戳…

【博图TIA-Api】通过Excel自动新建文件夹和导入FB块

【博图TIA-Api】通过Excel自动新建文件夹和导入FB块 说明思路准备获取Excel表格内文件名和FB块名等信息新建文件夹部分筛分获取的文件夹数据,去掉重复内容创建文件夹 导入FB块导出FB块的xml文件查找需要放置的文件夹导入块 说明 续上一篇文章,这次是根据…

广东有哪些媒体资源?如何邀请媒体报道

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 广东拥有丰富的媒体资源,包括电视台、广播电台、报纸、网络媒体等。以下是一些广东地区的媒体资源: 广东有哪些媒体资源?如何邀请媒体报道 电视台&…

信钰证券|飞行汽车概念走势活跃,金盾股份“20cm”涨停

飞翔汽车概念5日盘中走势活泼,到发稿,金盾股份“20cm”涨停,万丰奥威涨超6%,光洋股份涨逾5%,商络电子、星源卓镁涨近4%。 金盾股份强势涨停,公司近来在出资者互动渠道表示,公司和清华大学联合研…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:文本通用)

文本通用属性目前只针对包含文本元素的组件,设置文本样式。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 属性 名称参数类型描述fontColorResourceColor设置字体颜色。 从API version 9开…

day12_SpringCloud(Gateway,Nacos配置中心,Sentinel组件)

文章目录 1 Gateway组件1.1 Gateway简介1.2 Gateway入门1.3 网关路由流程图1.4 路由工厂1.5 过滤器1.5.1 过滤器简介1.5.2 内置过滤器1.5.3 路由过滤器1.5.4 默认过滤器1.5.5 全局过滤器1.5.6 过滤器执行顺序 2 Nacos配置中心2.1 统一配置管理2.2 Nacos入门2.2.1 Nacos中添加配…

Nodejs 第四十九章(lua)

lua Lua是一种轻量级、高效、可嵌入的脚本语言,最初由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)的一个小团队开发而成。它的名字"Lua"在葡萄牙语中意为"月亮",寓意着Lua…

文件操作与IO(3) 文件内容的读写——数据流

目录 一、流的概念 二、字节流代码演示 1、InputStream read方法 第一个没有参数的版本: 第二个带有byte数组的版本: 第三个版本 搭配Scanner的使用 2、OutputStream write方法 第一个版本: 第二个写入整个数组版本: …

Unity使用UnityWebRequest读取音频长度不对的解决方法

在开发的过程中碰到这样一个问题,有的音频文件通过UnityWebRequest读取出来后,AudioClip的Length会不对,比如本身有7秒,读出来只有3秒。代码如下: IEnumerator TestEnumerator() {UnityWebRequest www UnityWebReque…

linux kernel物理内存概述(五)

目录 概述 一、快速路径分配 1、get_page_from_freelist 2、rmqueue()函数 二、慢速路径分配 1、分配流程 三、direct_compact 概述 物理内存分配步骤 1、初始化,参数初始化 2、内存充足,快速分配 get_page_from_freelist 3、内存压力大,慢速…

Android 拍照本地图片选择框架适配

前言 通常技术方案的选择、会带来后续一些不可控的东西,这也是没法避免的,程序开发者中同时面对、测试、领导、产品各种要求。同时在网络上查找的资料也只是很旧的,不一定适合新设备,需要推倒重新弄 1、解决方案通过意图选择器做…

后端项目访问不了

问题: 后端启动不了,无法访问网站 原因: 1.防火墙没有关 2.有缓存 3、项目没有启动 4、docker没有启动 解决: 先查看进程:docker ps,必须有三个 详细查看:docker ps -a exited代表没有开启…

Java 简单模拟银行存取钱

模拟银行存取钱 一、实验任务 在银行办理业务时,通常银行会开多个窗口,客户排队等候,窗口办理完业务,会呼叫下一个用户办理业务。本实验要求编写一个程序模拟银行存取钱业务办理。假如有两个用户在存取钱,两个用户分别…

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(二)

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(前导) Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(一) Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(三) 五、实验目的 本次实验使用电脑上的…

分析开源机器学习框架TensorFlow

TensorFlow是一个开源的机器学习框架,由Google开发和维护。它提供了一个灵活的编程环境,可用于构建和训练各种机器学习模型。TensorFlow的基本概念和使用场景如下: 张量(Tensor):在TensorFlow中&#xff0c…

Unity引擎关于APP后台下载支持的实现问题

1)Unity引擎关于APP后台下载支持的实现问题 2)Prefab对DLL中脚本的引用丢失 3)Unity DOTS资源加载问题 4)UnitySendMessage和_MultiplyMatrixArrayWithBase4x4_NEON调用导致崩溃 这是第376篇UWA技术知识分享的推送,精选…

webstorm 创建运行纯Typescript项目

创建一个空项目,在项目根目录创建一个tsconfig.json文件自动配置: 打开终端输入tsc --init,即可自动生成tsconfig.json文件手动配置: 在项目根目录下新建一个tsconfig.json文件,并配置如下内容 具体配置可以直接使用下面的配置&am…

三星成功研发出业界首款12层堆叠HBM3E

三星电子有限公司成功研发出业界首款12层堆叠HBM3E DRAM——HBM3E 12H,这是迄今为止容量最大的HBM产品。这款新型HBM3E 12H内存模块提供了高达1,280GB/s的史上最高带宽,并拥有36GB的存储容量,相较于之前的8层堆叠HBM3 8H,在带宽和…

案例介绍:汽车维修系统的信息抽取技术与数据治理应用(开源)

一、引言 在当今汽车产业的快速发展中,软件已经成为提升车辆性能、安全性和用户体验的关键因素。从车载操作系统到智能驾驶辅助系统,软件技术的进步正在重塑我们对汽车的传统认知。我有幸参与了一个创新项目,该项目专注于开发和集成先进的汽…

Redis是单线程还是多线程?

单线程为什么这么快的原因: 后来引入了多线程是因为: