[转帖]QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考
https://baijiahao.baidu.com/s?id=1675704570461446033&wfr=spider&for=pc
吞吐量
在了解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的因素。
总结,为了提升达到最好的性能,我们需要不断的进行性能测试,调整小城池大小,找到最合适的参数来达到提高性能的目的。
[转帖]QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考的更多相关文章
- ByteHouse云数仓版查询性能优化和MySQL生态完善
ByteHouse云数仓版是字节跳动数据平台团队在复用开源 ClickHouse runtime 的基础上,基于云原生架构重构设计,并新增和优化了大量功能.在字节内部,ByteHouse被广泛用于各类 ...
- Java架构师/高并发/高可用/高扩展/性能优化/框架源码分析实战
https://ke.qq.com/course/401944?taid=3389721334391320
- 阿里云云盾抗下全球最大DDoS攻击(5亿次请求,95万QPS HTTPS CC攻击) ,阿里百万级QPS资源调度系统,一般的服务器qps多少? QPS/TPS/并发量/系统吞吐量
阿里云云盾抗下全球最大DDoS攻击(5亿次请求,95万QPS HTTPS CC攻击) 作者:用户 来源:互联网 时间:2016-03-30 13:32:40 安全流量事件https互联网资源 摘要: ...
- 性能测试指标:TPS,吞吐量,并发数,响应时间
性能测试指标:TPS,吞吐量,并发数,响应时间 常用的网站性能测试指标有:TPS.吞吐量.并发数.响应时间.性能计数器等. 并发数并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力. 响 ...
- PV UV QPS 并发数
TPS(Transactions Per Second):每秒事务数 QPS(Query Per Second):每秒请求数,QPS其实是衡量吞吐量的一个常用指标,就是说服务器在一秒的时间内处理了多少 ...
- TPS、并发用户数、吞吐量关系
TPS.并发用户数.吞吐量关系 摘要 主要描述了在性能测试中,关于TPS.并发用户数.吞吐量之间的关系和一些计算方法. loadrunner TPS 目录[-] 一.系统吞度量要素: 二.系统吞吐量评 ...
- TPS,并发用户数,吞吐量以及一些计算公式
TPS,并发用户数,吞吐量以及一些计算公式 基本概念 TPS:每秒同时处理的请求数/事务数 并发数:系统同时处理的请求数/事务数 响应时间:一般去平均响应时间,只有当方差过大时,去90%的响应时间值 ...
- 系统吞吐量与QPS/TPS
QPS/TPS QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准. ...
- Jmeter--由PV估算tps和最大并发数
需求 "假设一个系统的业务有登录.浏览帖子.发送新贴.回复帖子,访问高峰是上午10点,日访问高峰PV约5208(含登录1300.浏览2706.发帖526.回帖676).系统响应时间要求小于3 ...
- 性能测试相关(TPS/RT/PV等)(转)
对于我们开发来说,我们日常最熟悉的工作就是把客户的需求实现并交付.但是,事情并不是往往就这样结束了,我们还需要后续对上线的系统进行跟踪调查,查看系统的运行情况.为什么呢?一方面,我们需要关注系统在运行 ...
随机推荐
- 【华为云技术分享】LwM2M协议的学习与分享
[摘要] 本文主要对于LwM2M协议进行了简单的介绍,包括协议的体系架构以及特性.对象.资源.接口的定义等,希望对你有所帮助. 1协议简介 LwM2M(Lightweight Machine-To-M ...
- 华为云PB级数据库GaussDB(for Redis)揭秘第五期:高斯 Redis 在IM场景中的应用
摘要:揭秘高斯 Redis 在IM场景中的应用. 本文分享自华为云社区<华为云PB级数据库GaussDB(for Redis)揭秘第五期:高斯 Redis 在IM场景中的应用>,原文作者: ...
- 解读知识蒸馏模型TinyBert
摘要:本篇文章的重点在于改进信息瓶颈的优化机制,并且围绕着高纬空间中互信息难以估计,以及信息瓶颈优化机制中的权衡难题这两个点进行讲解. 本文分享自华为云社区<[云驻共创]美文赏析:大佬对变分蒸馏 ...
- 实践解析可视化开发平台FlinkSever优势
摘要:华为Flink可视化开发平台FlinkServer作为自研服务,能够提供比原生flinksql接口更强的企业级特性,比如任务的集中管理,可视化开发,多数据源配置等. 本文分享自华为云社区< ...
- 火山引擎 VeDI 推出这款产品 助力企业实现以“人”为中心的数据洞察
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 CDP(Customer Data Platform,客户数据平台)市场将迎来新一轮的高速增长. 国际数据公司(以 ...
- websocket群聊实战
演示及源码地址: 演示地址:https://www.wchime.xyz/#/ 后端代码:https://gitee.com/mom925/wchime-web-api 前端代码:https://gi ...
- 二、Mycat安装
系列导航 一.Mycat实战---为什么要用mycat 二.Mycat安装 三.mycat实验数据 四.mycat垂直分库 五.mycat水平分库 六.mycat全局自增 七.mycat-ER分片 万 ...
- <vue初体验> 基础知识 1、vue的引入和使用体验
系列导航 <vue初体验> 一. vue的引入和使用体验 <vue初体验> 二. vue的列表展示 <vue初体验> 三. vue的计数器 <vue初体验&g ...
- 【驱动】以太网扫盲(三)PHY的控制器驱动框架分析
1. 概述 PHY芯片为OSI的最底层-物理层(Physical Layer),通过MII/GMII/RMII/SGMII/XGMII等多种媒体独立接口(介质无关接口)与数据链路层的MAC芯片相连,并 ...
- 核心技能之UI库选择
移动端推荐: vant.cube-ui 有赞vant: https://youzan.github.io/vant/#/zh-CN/ 滴滴cube-ui: https://didi.github.io ...