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

并发数和TPS的理解

为什么80%的码农都做不了架构师?>>>   hot3.png

      并发数可以理解为,单位时间内同时在线的人数,而这个数值是可以一直增大的;但是TPS就不一样了,TPS受限于机器的硬件资源,最常见的就是CPU load,当并发数在增大,CPU load也会上升,一般当load到达1时,满载,也代表着TPS到达一个顶峰,如果并发数继续增大,那么TPS的曲线会下降。

所以,如果用图来描述上述过程的话,并发数是一条直线,TPS是一条抛物线(当load未满载时呈现上升,满载后下降),所以我认为两者是不同的概念,不能混为一谈。

对于TPS我是认同以上的观点;一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联,单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。对于TPS的考量,这里其实有几个关键的要素:

TPS:每秒钟request/事务 数量

并发数:系统同时处理的request/事务数

RT:事务处理响应时间,一般取平均响应时间

基于此,平时我们计算TPS遵循如下关系:TPS= 并发数/RT

一个系统吞吐量通常由TPS、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某 一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。

  

PS:下面是性能测试的主要概念和计算公式,记录下:

一.系统吞度量要素:

  一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。

单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间

        QPS(TPS):每秒钟request/事务 数量

        并发数: 系统同时处理的request/事务数

        响应时间:  一般取平均响应时间

(很多人经常会把并发数和TPS理解混淆)

理解了上面三个要素的意义之后,就能推算出它们之间的关系:

QPS(TPS)= 并发数/平均响应时间

        一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。

决定系统响应时间要素

我们做项目要排计划,可以多人同时并发做多项任务,也可以一个人或者多个人串行工作,始终会有一条关键路径,这条路径就是项目的工期。

系统一次调用的响应时间跟项目计划一样,也有一条关键路径,这个关键路径是就是系统影响时间;

关键路径是有CPU运算、IO、外部系统响应等等组成。

二.系统吞吐量评估:

我们在做系统设计的时候就需要考虑CPU运算、IO、外部系统响应因素造成的影响以及对系统性能的初步预估。

而通常境况下,我们面对需求,我们评估出来的出来QPS、并发数之外,还有另外一个维度:日PV。

通过观察系统的访问日志发现,在用户量很大的情况下,各个时间周期内的同一时间段的访问流量几乎一样。比如工作日的每天早上。只要能拿到日流量图和QPS我们就可以推算日流量。

转载于:https://my.oschina.net/dyyweb/blog/1838626

相关文章:

  • java 过滤list的几种方式
  • java中的重载(overload)和重写(override)区别
  • 这是一套Java菜鸟到大牛的学习路线之高级教程,由工作了10年的资深Java架构师整理。...
  • 雷林鹏分享:PHP 多维数组
  • 联系我过户这些快到期的域名
  • Maven使用过程中遇到的问题,及解决方案
  • linux磁盘管理
  • spring配置中classpath: 与classpath*:的区别
  • 虚拟机(Virtual Machine)和容器(Container)的对比
  • Linux第四章 进程
  • css选择器有哪些
  • Hbase备份
  • 前端战五渣学前端——初探Parcel急速打包
  • Android程序员搞Web之HTNL(一)
  • mysql-proxy安装过程 (转)
  • .pyc 想到的一些问题
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Javascript设计模式学习之Observer(观察者)模式
  • java正则表式的使用
  • Redux 中间件分析
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 对超线程几个不同角度的解释
  • 基于web的全景—— Pannellum小试
  • 入门级的git使用指北
  • 深度学习中的信息论知识详解
  • 手写一个CommonJS打包工具(一)
  • 微信小程序开发问题汇总
  • 正则表达式小结
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • HanLP分词命名实体提取详解
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • (1)(1.11) SiK Radio v2(一)
  • (1)(1.13) SiK无线电高级配置(六)
  • (C++17) optional的使用
  • (二)springcloud实战之config配置中心
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (学习日记)2024.01.09
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net core 6 redis操作类
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .net访问oracle数据库性能问题
  • .NET构架之我见
  • /run/containerd/containerd.sock connect: connection refused
  • ::前边啥也没有
  • [] 与 [[]], -gt 与 > 的比较