吞吐量

在了解qps、tps、rt、并发数之前,首先我们应该明确一个系统的吞吐量到底代表什么含义,一般来说,系统吞吐量指的是系统的抗压、负载能力,代表一个系统每秒钟能承受的最大用户访问量。

一个系统的吞吐量通常由qps(tps)、并发数来决定,每个系统对这两个值都有一个相对极限值,只要某一项达到最大值,系统的吞吐量就上不去了。

QPS

Queries Per Second,每秒查询数,即是每秒能够响应的查询次数,注意这里的查询是指用户发出请求到服务器做出响应成功的次数,简单理解可以认为查询=请求request。

qps=每秒钟request数量

TPS

Transactions Per Second 的缩写,每秒处理的事务数。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

针对单接口而言,TPS可以认为是等价于QPS的,比如访问一个页面/index.html,是一个TPS,而访问/index.html页面可能请求了3次服务器比如css、js、index接口,产生了3个QPS。

tps=每秒钟事务数量

RT

Response Time缩写,简单理解为系统从输入到输出的时间间隔,宽泛的来说,他代表从客户端发起请求到服务端接受到请求并响应所有数据的时间差。一般取平均响应时间。

并发数

简而言之,系统能同时处理的请求/事务数量。

计算方式

QPS=并发数/RT 或者 并发数=QPS*RT

举个栗子:

假设公司每天早上9点到10点1个小时内都有员工要上厕所,公司有3600个员工,平均每个员工上厕所时间为10分钟,我们来计算一下。

QPS    = 3600/(60*60)   1

RT      = 10*60            600秒

并发数 = 1 * 600          600

这样就意味着如果想达到最好的蹲坑体验,公司需要600个坑位来满足员工需求,否则的话上厕所就要排队等待了。

性能思考

按照QPS=并发数/RT公式,假设我们现在是单线程的场景,那么QPS公式应该是这样:QPS=1/RT,实际上RT应该=CPU time + CPU wait time,如果将线程数提高到2,那么QPS=2/(CPU time + CPU wait time),那么是否意味着我们只要单纯提高线程数就能提高QPS呢?

最佳线程数计算

假设CPU time是49ms,CPU wait time是200ms,那么QPS=1000ms/249ms=4.01,这里200ms的wait时间我们可以认为CPU一直处于等待状态啥也没干,理论上来说200ms还可以接受200/49≈4个请求,不考虑上下文切换和其他开销的话,可以认为总线程数=(200+49)/49=5,如果再考虑上CPU多核和利用率的问题,我们大致可以认为:最佳线程数=RT/CPU Time * CPU核心数 * CPU利用率

那么最大QPS公式推导为:

最大QPS=最佳线程数*单线程QPS=(RT/CPU Time * CPU核心数 * CPU利用率)*(1/RT) = CPU核心数*CPU利用率/CPU time

那么这样是否意味着我们只要不停增加CPU核心数就能无限提高QPS呢

阿姆达尔定律Amdahl

G.M.Amdahl在1967年提出了Amdahl’s law,针对并行处理的scalability给出了一个模型,指出使用并行处理的提速由问题的可并行的部分所决定。我们可以简单理解为程序通过额外的计算资源,理论上能获得的加速值。

par为并行计算所占的比例,p为并行处理节点个数

假设你想从望京去顺义,坐一辆车需要3小时,虽然现在有3辆车,你也不能1小时就到。这里无法并行,所有Par=0%,p=3,加速比还是等于1,并没有提高速度。

古斯塔夫森定律Gustafson

斯塔夫森定律又被称为扩展的加速比(scaled speedup),他说明处理器个数、串行比例和加速比之间的关系,只是和阿姆达尔定律侧重角度有所不同。

按照阿姆达尔定律和QPS计算公式,在CPUtime 和 CPU利用率不变的情况下,增加CPU核心数就能增加最大QPS,在par不为0即并行的时候,增加并行数量p就能提升效率,但是实际上随着请求数量的增加,带来大量的上下文的切换、gc和锁变化。qps更高,产生对象越多,gc越频繁,cpu time和利用率都受到影响,尤其在串行的时候,锁自旋、自适应、偏向等等也成为影响par的因素。

总结,为了提升达到最好的性能,我们需要不断的进行性能测试,调整小城池大小,找到最合适的参数来达到提高性能的目的。

参考:

http://javahao123.com/?p=772

https://cloud.tencent.com/developer/article/1106559

https://www.cnblogs.com/caishunzhe/p/13056105.html

https://www.jianshu.com/p/8532ac88ce72

https://zhuanlan.zhihu.com/p/66929848

https://www.cnblogs.com/lupeng2010/p/12705795.html

特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:

长按订阅更多精彩▼如有收获,点个在看,诚挚感谢

QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考相关推荐

  1. 性能测试中常见的专业术语:QPS、TPS、并发数、响应时间(RT)、吞吐率和吞吐量【杭州多测师】【杭州多测师_王sir】...

    一.QPS: 每秒钟处理完请求的次数,注意这里是处理完,单接口看做是一个事务的话,1TPS=1QPS 二.TPS:每秒钟处理完的事务次数,一般TPS是对整个系统来讲的.一个应用系统1s能完成多少事务处 ...

  2. 10个问题带你全面理解Linux性能优化

    10个问题带你全面理解Linux性能优化 • Feiskyhttps://feisky.xyz/posts/2020-06-06-linux-perf/本文整理自极客时间"10个问题带你全面 ...

  3. mysql优化十:从架构角度全局理解mysql性能优化

    从架构角度全局理解mysql性能优化 MySQL性能优化其实是个很大的课题,在优化上存在着一个调优金字塔的说法: 很明显从图上可以看出,越往上走,难度越来越高,收益却是越来越小的.比如硬件和 OS调优 ...

  4. QPS、TPS、并发数、吞吐量概念

    一.概念 1.QPS Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准. ...

  5. 服务器性能指标(QPS/TPS/RT)

    目录 QPS RPS TPS RT LOAD PV UV RV QPS QPS(Queries per second )每秒查询速率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,经常 ...

  6. 【高并发】面试官:性能优化有哪些衡量指标?需要注意什么?

    点击上方蓝色"冰河技术",关注并选择"设为星标" 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单.稳定.可扩展的延迟消息队列框架 ...

  7. 从架构师角度全局理解Mysql性能优化

    MySQL性能优化其实是个很大的课题,在优化上存在着一个调优金字塔的说法: 很明显从图上可以看出,越往上走,难度越来越高,收益却是越来越小的. 所以在进行优化时,首先需要关注和优化的应该是架构,如果架 ...

  8. 【JUC多线程与高并发】线程进阶,性能优化之无锁

    多线程进阶,性能优化之无锁 比较交换(CAS) 线程安全整数类:AtomicInteger CAS底层原理:Unsafe类 CAS缺点: ABA问题的解决 原子引用:AtomicReference 原 ...

  9. 并发请求多 服务器响应慢 post,【转】吞吐量、QPS(TPS)、并发数、RT性能指标及ab并发测试...

    概念 吞吐量 系统的吞吐量是指系统的抗压.负载能力,指的是单位时间内处理的请求数量.通常情况下,吞吐率用 "字节数/秒" 来衡量,也可以用 "请求数/秒",&q ...

最新文章

  1. 猫眼、淘票票两虎相争:下沉市场、服务、内容成决胜关键
  2. 用鼠标去控制物体移动的方法
  3. aop的概念以及 cglib-nodep-2.1_3.jar第三方jia包动态代理使用
  4. CSDN写博客时设置图片显示大小
  5. Robot Framework(4)——Selenium2Library关键字
  6. C语言 实现学生管理系统(手把手教学)
  7. 联想笔记本电源管理-设置充电上下限
  8. 摄氏度和华氏度的相互转换
  9. 计算机软考集成项目管理工程师,计算机软考系统集成项目管理工程师
  10. elasticSearch-优化篇
  11. java源码系列:HashMap底层存储原理详解——5、技术本质-原理过程-算法-取模会带来一个什么问题?什么是哈希冲突?为什么要用链表?
  12. RealView 应用
  13. 单身女生看过来:你为什么没有男朋友的20个原因
  14. 财务系统数字转化方法
  15. 计算机基础表格模拟题,4月全国网络统考资料《计算机应用基础》模拟题及参考答案——电子表格...
  16. Mysql 1064错误
  17. K8S实战部署系列-K3S v1.22.5+k3s1(CentOS7.9)
  18. 从多个维度说说产品经理的分类与发展方向
  19. 成为DevOps/SRE工程师有多难?看看这份必备技能清单
  20. matlab 极坐标 二维,matlab笔记二维绘图(极坐标隐函数等)008.docx

热门文章

  1. 大学生学单片机怎么入门?
  2. vb科学计算机x y,vb程序用vb实现系统的计算器功能1/x,sqrt,%,+/-, 爱问知识人
  3. 【Java】时间复杂度 与 空间复杂度
  4. 关于logits and labels must have the same first dimension, got logits shape [128,10] and labels shape报错
  5. poj1273(最大网络流问题模版)
  6. P1502 窗口的星星 离散化+扫描线
  7. c语言 爬虫 socket,爬虫遇到 Socket,莫慌,肝就完了!
  8. 视频关键帧提取 java_JavaCV实现将视频以帧方式抽取
  9. 51nod 1038 X^A Mod P( N 次剩余)
  10. UVA1396 Most Distant Point from the Sea(AM - ICPC - Tokyo - 2007)(计算几何,半平面交 + 二分答案)