03丨性能综述:怎么理解TPS、QPS、RT、吞吐量这些性能指标?
03丨性能综述:怎么理解TPS、QPS、RT、吞吐量这些性能指标?
讲述:高楼
时长30:59大小21.25M
对这些性能指标都有哪些误解
重新理解那些性能指标概念
响应时间 RT
压力工具中的线程数和用户数与 TPS
业务模型的 28 原则是个什么鬼?
响应时间的 258 原则合理吗?
性能指标的计算方式
总结
思考题
赞 35
提建议
精选留言(132)
- 飞翔2019-12-18如果这时响应时间是 100ms,那显然并发线程数是 500TPS/(1000ms/100ms)=50(并发线程)。 这没看明白是什么意思
作者回复: 对一个线程来说,如果响应时间是100ms,那这个线程在一秒内不就是:1000ms/100ms = 10tps了吗? 如果要达到500TPS,那需要多少线程呢?就是500TPS/10TPS=50线程。
共 11 条评论85 - nana2019-12-19老师好,有个问题麻烦问下jmeter压测constant throughput timer中设置的qps ,实际中的threads是怎么分配的?对于number of threads(users)和ramp-up period设置压上去的throughput和前面提到的qps这个不同点,麻烦解释下,辛苦多谢啦
作者回复: 这里我把constant throughput timer设置为all threads来说。 1. 如果constant throughput timer里设置了10 samplers per min,即是不管你有多少threads,都是只发10个samplers per min出去。 如果你设置了1个thread,那就是6秒发一个。 如果你设置了2个threads,那就是一次发2个,12秒发一次。 如果你设置了20个threads,那就是一开始就会发20个出去,然后再等2分钟之后再发后面20个。 number of threads(users)和ramp-up period不管如何设置,都会受前面设置的constant throughput timer控制。即是按分钟来计算sampler,要是发多了,后面停的时间就长。
共 4 条评论20 - zuozewei2019-12-17第一个问题: 这个命题的争论有个bug,问题在于「快、好」的定义上。做为不同业务下的性能水平,快的定义是不一样的,比如在数据处理业务中,常分OLAP(联机分析处理)、OLTP(联机事务处理),比如一个简单的 OLTP 查询有大厂是要求微妙级别的,OLAP 统计报表类的业务查询几分钟也是可以接受啊。 第二个问题: 在一个具体的业务场景中,性能场景中的业务模型和二八原则并没有什么关系,即使从宏观上来说有关系,也是很牵强的,至少至今为止,还没看到任何有数据和数学公式的支撑证明。展开
作者回复: 深得真传。哈哈。
17 - 顺利2020-02-17同学提问: 那是不是jmeter测试每秒500个用户并发 就是设置50个线程 Ramp-Up为1秒?老师的回复: 不一定,要看响应时间是多长,做出有梯度的场景来。 我的问题是:如果响应时间是10ms,如何得出这个梯度的场景。求解答
作者回复: 没理解这个问题是啥。 首先要测试每秒500用户并发,那就要看你设置事务的粒度了。要计算并发的线程应该有多少,才能支持500用户并发,也就是前文提到的并发度。 响应时间是10ms,梯度场景要根据系统能够支持的最大TPS来计算,这个最大TPS可以通过二分法来评估。当响应时间是10ms时,显然一个压力线程会产生100TPS,如果系统大概能支持2000TPS,在不考虑性能损耗的情况下,就是需要20个压力线程,一般在这种情况下,我会做4-5个梯度。
共 3 条评论12 - 律飛2019-12-20第一个问题,世界上没有一个放之四海而皆准的原则理论,拿来就用必出问题,唯有知其然,知其所依然,才能正确使用。感谢老师给我们上了生动的一课,在学习中始终保持一份好奇心,多思考,多问几个问题,才能学以致用。 第二个问题,二八定律是19世纪末20世纪初意大利经济学家帕累托发现的。帕累托从大量具体的事实中发现:社会上20%的人占有80%的社会财富,即:财富在人口中的分配是不平衡的。现在这个定律被广泛用在很多领域,比较有名如时间管理认为,20%的时间完成80%的工作。其实我个人认为,就时间管理而言,这个二八定律也是不合适的,是学渣们自我偷懒的借口。所以很喜欢老师说的,不要满口理论、定律等花架子,应该按照业务,按照样本数据分析结果,从实际出发,这样才能实事求是,做出符合实际的业务预估。 这堂课还需好好消化,也建议老师结合自己的实践,提出你自己的模型,让我们学习参考借鉴!展开
作者回复: 理解的非常正确。希望后续的篇幅能让你满意。我也尽我所能。
9 - miminiMei2019-12-19老师的声音好好听,可以一直听,反复听😉
作者回复: 多谢鼓励。不过还是要关注技术重点哦。哈。
9 - 秋水共长天一色🌄2020-05-30老师你好,我在读了你的这篇文章之后也产生了几个疑问。 1.就在文中你在解释TPS中的T的定义时,你提到了三种脚本情况,1是接口级,2是业务级,3是用户级。主要用户级中有提到一个点击的动作的这个步骤,如果在jmeter中进行压测是要怎样体现这个步骤?还有我们定义业务接口层脚本时是只将主流程的接口收录呢还是说会将这个页面下所有的接口都收录呢?(例如在一些商城项目中,确认订单页面有生成订单的接口,这个我们可以认为这是主流程的接口,但是也有可能有调一些关于获取广告信息的接口,但是这个接口与主流程下单流程没什么关系,但是又确实消耗了服务器资源了,那我们在写脚本时是否还需要把这部分也写进去) 2.一个事务的完成我理解的是主要看这个脚本是如何编写的,如果这个事务的脚本中只有针对一个接口而已,那么接口请求完成后就算是完成一个事务。如果这个事务脚本中有10个接口组成的事务,那就需要10个接口都请求完成了才算一个事务的完成,这样理解对吗? 3.对于QPS,我们在实际工作中我们要如何得知数据库查询在整个请求中所占的比重呢? 4.在解释RPS的时候给出了一个例子(如果一个用户点击了一次,发出来 3 个 HTTP Request,调用了 2 次订单服务,调用了 2 次库存服务,调用了 1 次积分服务),这三个http请求我能理解,但是中间你是用了“调用”这个词,这里的调用是指订单服务内部去调用库存服务和积分服务的外放接口还是说调用的库存服务和积分服务公开的方法? 5.还有在并发线程时有提到一个公式(500TPS/(1000ms/100ms)=50(并发线程)),我想知道其中的这个100ms的这个响应时间是如何得出的?是通过对一个脚本进行单一线程执行一次的方式得出的响应时间吗? 6.还有这个课程解答了很大一部分我对与性能测试中想不通的点,这个课程很值,感谢老师的分享。展开
作者回复: 1. 用户级会包括业务下的所有接口。 2. 理解的对。 3. 看时间长度。 4. 不管是调接口还是调方法,不都是调用 吗? 5. 基准测试场景的结果。
7 - 夜空中最亮的星2019-12-17这一篇超值了
作者回复: 有过性能经验的人都会有超值的感觉。哈哈。
7 - 大脸猫2020-01-13老师,请问吞吐量怎么理解我一直没明白,吞吐量和TPS,响应时间之间有什么关系
作者回复: 通常我都不用吞吐量这个概念。因为它在不同人的脑子里会存在一些误解。 比如说,有些人说吞吐量就是在说TPS。有些人说吞吐量是说的每秒字节数。 所以不建议用这个概念来承载性能指标。有TPS就够了。
6 - 棋子2019-12-17有没有一套相对普适的测试场景、衡量指标以及对应的测试方法论?看完3篇感觉思维有点儿混乱。也可能是自身想通过课程走捷径,有点急躁,谢谢🙏
作者回复: 别急,后面的更新中就有你想要的测试场景的具体推演方法。
6 - 妍2020-04-02老师您好,有个问题请教一下 ,在jmeter中,设置200 并发,1s内发出,,执行结果中 平均响应时间为6ms,,那我的TPS 计算是200还是200*(1/0.006)呢?
作者回复: 当然是后者。
共 4 条评论5 - rainbowzhouj2019-12-19第一个问题: 不合理之处在于没有结合实际场景去规定它的响应时间。响应时间是否合理是要进行对比的,例如现在的大数据技术测试,在不同的条件配置下处理TB级的数据,响应时间半天、一天都可以说是合理的响应时间。因为影响响应时间的因素有很多(存储方式,调度方式,参数调优等),单独拿“258”说明是没有意义的。 第二个问题: 常识的适用情况在于通用,但实际场景中经常会有各种“意外”。以12306购票系统为例,以前春运抢票时经常会有朋友、家人吐槽12306好卡、好慢,我估计之前就是业务模型用了28原则,虽然已经进行过了压力测试、疲劳测试,但还是抵挡不住全国人民着急回家的心情,拼命的发送请求......所以实际情况要实际考虑,以通用估意外肯定会才很多坑,只有不断地优化,更新才能一步步满足用户地需要。(PS:现在12306系统已经好很多了)展开
作者回复: 理解的非常正确。
5 - 漫漫2019-12-17一模一样,每个人都认为不是自己的问题
作者回复: 所以就得有仲裁能力的人,而这个人就应该是性能测试团队中来,在我的工作经历中,我的团队就是干这个仲裁的事情。
5 - Geek_618ac52019-12-17有点虚,都是讲一些 指标计算方式 不准,能否给一个准的? 新的刚开发的系统什么都没有,怎么收集线上业务数据?
作者回复: 新开发的产品当然不是收集线上业务数据的方式。而应该来自于产品设计的团队,或同行业的数据比对。
共 3 条评论5 - 吃饭睡觉打豆豆2019-12-16其实我觉得这个什么所谓的28,258,25810原则都是虚的,直接点就是测目前系统实际的并发数和吞吐量
作者回复: 非常正的想法。响应时间从来都没有标准。
共 2 条评论5 - aoe2020-10-14老师是一个有故事的人,文章很精彩,例子很生动。把技术文章写成了小说。
作者回复: 风月是故事,岁月是人生。年纪大了,总是有岁月也有风月的。哈哈。
4 - sharpdeep2020-01-08在这种情况下,我们可以根据现有的数据,做统计分析、做排队论模型,进而推导以后的系统容量。 做统计分析,做排队论模型,这个具体是怎么操作?
作者回复: 等以后有机会再说这个大话题。操作过程基本上可以写一个新专栏。而说的太空洞,又不是我的风格。
共 2 条评论4 - 钟2019-12-31在上面这张示意图中,其实压力工具是 4 个并发线程,由于每个线程都可以在一秒内完成 4 个事务,所以总的 TPS 是 16。这非常容易理解吧。而在大部分非技术人的脑子里,这样的场景就是并发数是 4,而不是 16。 —————————————— 这里的场景tps是16没错, 并发数是4为什么错了呢? 并发的意思不就是同时请求数量吗? 4个线程, 每一刻都是只有4个同时的请求在处理展开
作者回复: 要说每一刻,并发肯定就是4了。 而我们描述服务端的性能指标时都不是时刻为单位的。
共 5 条评论4 - 郭刚2019-12-25我们经常遇到这样的问题,系统注册用户有2万,我们的公式是2万*5%*5%,第一个5%是在线用户数,第二个5%是压力测试的用户数。 用户不同意,至少要测试并发数1千,测试环境的机器又不行,经常鸡飞狗跳,无语啊!
作者回复: 这种无脑的性能需求,只有强势的碾压沟通可以解决了,要不然就得扔鞋子了。
共 2 条评论4 - 月半虫工🍧2019-12-24老师,我有些点不太确定: 1.在线用户数是通过监控得出的数据吗? 2.并发度是主要业务才会大些,其他业务的并发度在1%~5%? 3.TPS是有上面两个业务指标计算得出来的? 4.响应时间是通过生产数据得出的,算是已知条件? 5.并发线程是由TPS *响应时间得出的,是需要计算的? 我把我的理解写在笔记里,希望能得到解答: https://mubu.com/doc/x98c71O2aZ展开
作者回复: 1. 通过监控可以得出。 2. 在我的经验中,其实主要业务才有1%~5%。 345. TPS、RT和压力机的并发线程数。都是不用计算的,是直接通过测试执行得出的。在文中所说的只是说明他们之间的关系而已。
共 2 条评论3