02丨性能综述:TPS和响应时间之间是什么关系?
02丨性能综述:TPS和响应时间之间是什么关系?
讲述:高楼
时长16:02大小21.98M
总结
思考题
赞 39
提建议
精选留言(84)
- zuozewei2019-12-17第一个问题: 日常生活中价值可以通俗的理解为“合算不合算”,“值得不值得”,这里泛指对性能项目的有益程度。 在价值工程中,价值是个科学的概念,其定义为:V=F/C 式中: V——价值(Value) F——功能评价值(Function Worthy) C——总成本(Total Cost) 可见,包括三个基本要素,即价值、功能和成本。 功能可解释为用途、目的等等。对于一个性能项目来说,功能就是性能验证 or 性能分析 or 性能调优。 概念这里简单理解为“思维惯性”,其会决定做一个性能项目的行为模式,是指实现功能(性能验证 or 性能分析 or 性能调优)所支付费用(成本)。 SO,为了提升价值,在功能(目的)不变的情况下唯有适当的降低不合适的成本,那么这些杂七杂八,逻辑关系不符合真实的场景的概念势必需要淘汰。 第二个问题: 性能场景中的“场景”比较正宗的描述是:在既定的环境(包括动态扩展等策略)、既定的数据(包括场景执行中的数据变化)、既定的执行策略、既定的监控之下,执行性能脚本,同时观察系统各层级的性能状态参数变化,并实时判断分析场景是否符合预期。 那么如何看性能数据呢? 一般有两个核心即趋势和证据链。 分析数据趋势需要对一个时间序列数据的分析,一般采用线性回归分析。 对于证据链查找,需要对不同时间序列数据的分析,一般采用数据的相关性分析。展开
作者回复: 你写的比我写的还要好。哈哈。下面的篇幅中就要有趋势和证据链的部分。这也是我觉得性能中最重要的部分。我混了混迹江湖十几年的依靠。
共 5 条评论97 - 莫西 👫 小妞儿 ...2019-12-30老师,我有个疑问。“单交易容量测试”是对单独接口进行压测是吧?比如针对每一个接口都测了100、200、300并发。那么这个测试结果和“混合容量性能场景”测完的结果应该怎么对比分析呢?
作者回复: 不用对比分析。 做单交易容量测试是为了混合容量做基准数据的。举例来说。 业务1单交易容量能达到300TPS,且响应时间也非常好。而在混合中,可能业务1只需要100TPS,那就说明业务1不会成为混合容量的瓶颈点。 如果业务1单交易容量的时候只能达到50,而在混合场景中需要它能跑到100,怎么办?这就只能在单交易的时候做优化了。 所以单交易容量测试是为了确定是不是应该在单交易容量阶段做性能优化。 题外话:要注意的是混合容量中有相互的逻辑关系,这个必须到混合容量的时候才会出现。
共 5 条评论43 - suke2020-03-08但是由于用户数增加的幅度会超过队列长度,所以 TPS 仍然会增加 这句话没明白这个逻辑是为什么?能详细解释一下么
作者回复: tps之所以会增加是因为线程数的增加,而tps之所以增加的缓慢,是因为性能已经衰减。性能衰减必然产生请求队列。如果所有增加的请求都被放在了队列中,那处理的请求数就不会增加,响应也不会增加,tps就不变了。
共 8 条评论36 - 丑得带感2019-12-23有个问题想请教一下老师: 关于TPS与并发线程数,正常应该是以TPS作为系统容量的衡量标准,这个在系统性能比较好的时候很好和客户沟通(即TPS>并发数)。 但是在系统性能较低的项目中,有时候就很难和客户沟通,比如一次项目中,系统在2000并发,系统TPS就到了最大1500多,RT、资源利用率那些也还好;但是接着增加并发到5000时,TPS基本比较平稳,没有什么下降,响应时间才刚刚超时。 对于这种情况,在估算系统可支撑最大在线人数时,客户就觉得应该依据最大并发数5000去算(RT可接受时),而不是依据最大系统TPS1500多去算,他们觉得你的每1个并发都是模拟的1个用户在实际使用,而响应时间没超时,就说明可以支撑这个并发数的用户同时使用(假设并发度100%时)。 我从响应时间分析,感觉他们的说法也没毛病,但是理智告诉我,从TPS看系统每秒最大也就能处理1500多,其余的请求应该会在队列超时,或被拒绝,但是5000并发持续压测10分钟,也没看到大量超时或报错(千分之一以下),拿不出证据来支撑,感觉真是性能三观都要被颠覆,一直耿耿于怀,还请老师解惑!展开
作者回复: 在你的描述中,响应时间也还好,是什么程度的还好?如果从2000到5000,TPS平移,那响应时间至少上升了2.5倍。 即使这时还没到响应时间超时,也只能说明超时时间比较长,请求都放在队列中去了。对终端用户来说,就是感觉上的系统卡死。 如果这时你再上线程,是不是超时就会增加了? 其实就是:压力机线程、TPS、RT之间的转换关系。 从系统用户的角度来看,系统性能是在不断下降的。而不是技术上来看,没有超时和报错就是性能还可以支撑。
共 3 条评论26 - jy2020-05-24递增策略:比如分钟增加10个线程,100个线程要10分钟才全部启动完成,再持续运行10分钟,但是聚合报告统计的是这20分钟的tps,tps值明显会被前面10分钟拉低,如果这样测试出来的tps不达标怎么办?如果每分钟启动50个,2分钟即可全部启动,持续运行10分钟,tps达标。如何解释这两种情况呢?
作者回复: 所以判断最大TPS的时候,不是用聚合报告中的那个平均TPS值。而是看整个TPS曲线的最大TPS值。。
共 3 条评论18 - 微冷花谢2019-12-18请老师允许我一个新手留下自己的思考和疑问? 第一问,自己的思考是很多理论上的概念,不仅仅加深了我们对性能测试的理解的困难程度。同时,在实际发现性能瓶颈,实施性能优化,很多时候是没有太多帮助的。 第二问,之所以需要连续的一个符合实际的加压过程,是因为能够获取更加完整且准确的证据链。 个人疑问:关于如何去设计递增加压的过程,根据什么去设计,如何去设计出符合我们系统的加压过程? 对于老师的两问,个人理解不一定正确,希望老师指正。 对于个人疑问,麻烦老师留下思路。 最后,老师的讲的真实在,谢谢老师的分享。虽然有一些我还没办法懂,但是我会极力的去吸收。谢谢老师!展开
作者回复: 第一问:理解的很对。理论来自于实践,并且要再应用到实践中去。 才是真正的有价值。 第二问:前半句说的对,就是要一个符合实际的加压过程。后面句方向有点偏,连续不是为了获取证据链,而是为了判断瓶颈点的出现和性能衰减的过程,分析这个过程产生的压力数据、监控数据得到瓶颈点的过程才是获取证据链的。 针对个人疑问:后面的场景中,会更详细的提到。 在这里简单说一下,递增加压的过程是为了让一个系统的性能衰减过程可以清晰判断出来。而递增的量级就完全取决于业务系统的能力了。如果业务处理的响应时间长,在系统瓶颈还未明显出现时就递增的快一些;反之就慢一些。后续篇幅中再细看吧。
共 2 条评论9 - IT媚娘2019-12-17性能场景为什么要连续?而不是断开? 递增线程数,记录每次的性能指标,对比分析,画曲线,来观察指标变化的趋势,找出性能瓶颈,或者服务器最大处理能力
作者回复: 理解的非常正确。
共 2 条评论7 - LensAclrtn2019-12-171. 为什么说市场上的概念对性能项目实施没有太大价值? 看完第1、2讲,感觉老师真的是很真诚很负责,说出了很多我们想说不敢说的话 就拿老师举例的配置测试来说,我当时陆陆续续接触到这么些概念的时候就在想,这都谁造出来的词,连配置这么个基本操作也要上升到XX测试的程度...最搞笑的是还有一种叫“文档测试”的.感觉这些都太重理论轻实践了. 说个题外话,我以前虽然也对性能测试、压力测试、负载测试颇有微词,但自己也不能总结提炼出一个更好的分类框架或者体系, 今天看到老师用性能场景来作为划分依据,就是重实践的表现,很值得我们学习呢. 2. 为什么性能场景要连续不要断开? 说来惭愧,我第一个负责压测的时候就是用的离散的性能场景,也就是一次测试过程中线程数是固定的. 现实中的性能场景都不是一成不变的, 用固定的线程数去压测的意义很有限展开
作者回复: 能有这样的评论,我觉得很欣慰,有认同感。 我深受概念扰乱多年,总是得跟人解释一顿我认为对的概念和操作方式。
共 6 条评论5 - 分清云淡2019-12-16QPS=并发数*常数/RT , 也就是到瓶颈后加并发后RT增加QPS不变,那么瓶颈基本在RT增加的节点上。
作者回复: 你理解的很对。 对性能来说,性能瓶颈肯定是在RT增加的节点的。
共 6 条评论5 - -_-2020-08-04TPS 和QPS是一个东西么 我看概念是不一样的 但是有的用QPS 有的用TPS 这两个东西怎么个区别
作者回复: 这个就看自己想如何定义,我提到的T都是指事务,而事务是个灵活的概念,在每个项目中都可以自己去确定事务的大小。 而QPS....,说实话,我也不用。
4 - 拥抱黑夜的白天2020-05-301、市场上很多概念都是人云亦云,没有实际的应用到项目中去,而是以偏概全,甚至理解上存在误差、片面化,但是却被广泛的传播开造成了误导。而且没有通过实践证明的概念是没有实际的意义的。我认为真正的概念不是片面的、也不是单纯的理论性的,应该是从实际的业务中总结得出的结论,才会对实际的有指导意义。而我们也需要从项目中探索和积累经验、教训,不断丰富和完善我们的理论体系。总之一句话,实践出真知,任何没有实践做支撑的理论都是假想! 2、因为在实际的业务场景中,基本上不太会出现一下子增长很多用户量的情况,除非是限时秒杀这种业务场景,一般都是数据一点点增长上来的。我们做性能测试,要模拟还原真实的业务场景才有实际的意义和价值。展开
作者回复: 说的非常对。
共 2 条评论4 - chary2019-12-30做了这么多年的性能测试,容量测试找拐点一致都是我头疼的,每次都是经过很多次反反复复的加压,梯度压测,最终找到拐点。经常会有无用功的时候,不知道高老师是不是也一样!有没有什么好的方法!谢谢
作者回复: 哈哈,在我的理念中,就不用管拐点不拐点的事。 因为TPS在大部分场景中都是是缓慢上升的,是一个有明显弧度但没有明确拐点的曲线。 所以你要是问我方法,我会告诉你放弃这个拐点更为简单。
4 - Cyx2020-12-11老师,这段话没有懂,没有明白为什么TPS仍然会增加——很多时候,重负载区的资源饱和,和 TPS 达到最大值之间都不是在同样的并发用户数之下的。比如说,当 CPU 资源使用率达到 100% 之后,随着压力的增加,队列慢慢变长,但是由于用户数增加的幅度会超过队列长度,所以 TPS 仍然会增加,也就是说资源使用率达到饱和之后还有一段时间 TPS 才会达到上限。
作者回复: 根据响应时间的增加幅度计算就可以知道。假设响应时间增加了50%,线程数增加了100%,那tps就还会增加。
3 - 人心向善2020-07-21做了几年的测试都是比较传统,客户要求也比较明确,都是为了验收或者拿到一个简单的成果就行,他们的要求就是时间上不要超时,而且能达到我要求的并发数就行了,根本不会去考虑什么tps吞吐量这些东西,这样带来的坏处就是即使在实践中也很难达到能力的提升,时间长了就会进到一个错误的误区,就只是认为性能测试只看这几项要求,实则不是这样 还有就是做性能测试总体来说要求会的太多了,因为你不像开发精通一门语言就可以持续的做整个业务,性能测试这块完全取决于你的被测系统是什么架构由哪些新技术构成的,这个时候就会陷入另一种困境就是这个技术第一次接触,无论是从哪个角度对实施人员都是一头雾水,很难快速的进入到测试状态,即使是你的测试模型准备好了,测试出来的结果也不知道怎么去分析,如何分析... 简单的从网络、硬件、web应用这些、复杂点的到网络协议、磁盘利用、数据库参数、底层代码逻辑等等,这些都要一点点去分析比对的,但是这些东西一时间又不能全部去完全的理解并且能够上手,所以其实更多的时候是陷入了一种特别无奈的迷茫,但俗话又说:实践是检验真理的唯一标准,你只有去实践了才知道哪里对了哪里错了,经历了一定实践搞明白一些事情,觉得自己会了很多,可客户不这么想,他就觉得你技术不行,因为他要的很明确:结果就是结果,毕竟时间成本都在这里。 从这方面来说不仅技术上有问题,项目管理上也就出了问题了,因为已经不符合管理的三要素了....展开
作者回复: 看来是经历了很多失败的性能项目呀。
3 - 瑞泉2020-02-22老师,我是测试的新人,在第一个图中没有看到两个点:最优并发用户数(The Optimum Number of Concurrent Users)、最大并发用户数(The Maximum Number of Concurrent Users)的标注,在第二张图中也没有,希望老师能标注一下,十分感谢!
作者回复: 上面有两条竖线。第一个是最优并发用户数(The Optimum Number of Concurrent Users),第二个是最大并发用户数(The Maximum Number of Concurrent Users)。
共 3 条评论3 - luxuluck2022-03-28你好老师 请问你所给的TPS和响应时间曲线中的A、B、C、D、E 分别代表什么 ;A和B有什么区别啊
作者回复: A是响应时间开始上升的点;B是业务可接受的响应时间点;C是容量峰值点;D没有特别含义;E是系统崩溃点。
2 - Technological life2020-04-24jmeter里的线程数是不是就是用户数呢?线程数和用户数的关系是什么呢?
作者回复: 在我的理念中,一个T的设定为业务含义时,T才是用户。线程是实现T的。
共 2 条评论2 - Geek_a5ffcf2022-04-01老师,其实tps和响应时间的关系就是tps=压力线程数/响应时间,对吧
作者回复: 你这句话有一个前提就是一个压力线程只有一个T。
共 2 条评论1 - Cathy2022-01-09看了标题,有些紧张,有点不敢点开,担心归纳出什么数学公式出来,烧脑。 为了赶进度,不得不继续。还好,这一讲,继续探讨概念。上一讲从性能测试过程来讲,这一讲从性能场景的角度来讲。听了3遍,静下心来,终于听懂了。
作者回复: 有公式也是有小学基础就能懂的,别怕。哈。
1 - Geek_6bb2021-09-05老师你好!我想问下 1.基准测试里面提到的最大tps是指在响应时间指标内的tps,还是不看响应时间下的最大tps 2.比如我的A业务有一个接口,B业务有2个接口,C业务有5个接口 做混合场景的时候需要给B,C业务分别加一个事物控制器吗
作者回复: 1,当然要看响应时间。 2,我理解是要加的。
1