26丨案例:手把手带你理解TPS趋势分析
26丨案例:手把手带你理解TPS趋势分析
讲述:高楼
时长24:19大小22.21M
案例描述
第一阶段
第二阶段
第三阶段
总结
思考题
赞 8
提建议
精选留言(28)
- 大拇哥2020-02-22Ramp-up 配置有什么样的作用? 答:Ramp-up 配置的时间是指启动所有配置的线程总数所用的时间,例如设置的线程总数为500,Ramp-up设置的时间为50s,意为:启动500个线程数需要50s,平均为每一秒启动10个线程 为什么说压力工具中 TPS 和响应时间曲线抖动过大会不易于分析? 答:性能分析一定要分析曲线的趋势,通过趋势的合理性来判断性能瓶颈所在的原因,光靠平均值、最大值、最小值、中位数是无法确切的分析处压测过程中服务器的具体情况,只有通过分析曲线趋势,增加对趋势的敏感程度才是压测过程中更好的保障和前提。展开
作者回复: 理解到位,已经出师。
12 - Geek_6a9aeb2021-02-03 老师,你这里压力工具1是公网,压力工具2是内网,为何内网的TPS反而低,公网的反而快,按普通理解内网的网速是最快的啊,为何网速快反而TPS低?
作者回复: 因为内网TPS上的快,而场景又设置的线程增加太快,所以导致了tps看起来是低的,实际上已经是压死之后的状态了。
7 - Geek_6a9aeb2021-01-30这篇文章给人没有写完整的感觉,最好TPS上去了,也没提服务端有没积压的数据,以及cpu 内存这些大的指标有没提升? 实际操作很难得到完美的TPS幅度曲线,都有一点波动, 还有后面TPS曲线有了之后,就没有完整的描述到定位到是打印耗费时间多?如果是有经验的人可能会一下子定位到打印问题
作者回复: 看下一个专栏吧。会有相似的案例。
共 2 条评论4 - 蔡森冉2020-03-25今天好像明白一些东西,发现自己之前好像是一直是错的(好像一直理解这个都错了),就是Ramp-up是启动所有线程的时间,但是只是启动,实际上所有线程启动后压力时间是Duration,可以这样理解吗?然后tps抖动过大,那其实中间值这些数据就是完全没有意义的。
作者回复: duration包括rampup。 抖动的tps就是要分析的内容,不是没意义。
4 - Geek_6a9aeb2021-01-30第三阶段 通过注释掉打印日志的代码,可以得到如下结果: 仔细看这个阶段第二个图的标识,不是TPS,而是hit s,这有点偷换概念了吧?
作者回复: 在每个http request为一个T的情况下,这是同样的含义。
共 2 条评论3 - Geek_6a9aeb2021-01-30当用个人电脑(上图中压力工具 1)测试云端服务器时,达到 200 多 TPS。但是当用云端同网段压力机(上图中压力工具 2)测试时,TPS 只有 30 多,并且内网压力机资源比本地压力机要高出很多,服务器资源也没有用完。 老师,下面又说是日志打印, 那最先的TPS差异是因为打印吗?
作者回复: 这里有两个问题:1,是在内网测试时网络快,所以资源使用的会高;2,在本地压力机里由于网络不够快,日志打印的问题没有突显出来,在内网中才体现出来。
共 2 条评论3 - zwm2020-03-06Ramp-up 配置有什么样的作用?为什么说压力工具中 TPS 和响应时间曲线抖动过大会不易于分析? (1)ramp-up就是线程启动时间 。比如10个线程120s基本就是 梯度加压 5个线程运行60s之后再启动50线程运行,是否停止要看是否设置循环等,是一个等比例的梯度加压。 (2) 曲线抖动过大,可以肯定会有异常,这个题确实不会做
作者回复: 曲线抖动大了,不容易分析异常和趋势之间的关系。
3 - 涵涵2021-07-30老师,请教2个问题 1、参数化数据的时候是读取文件比较合适,还是读取数据库数据比较合适? 2、BeanShell取样器中对请求数据进行加签加密处理,会对测试结果有影响吗?
作者回复: 1. 看数据量,太大的参数化数据放在文件中读取慢的时候,就要考虑用数据库或缓存了。 2. 会有影响。不过根据业务逻辑,如果客户端也是必须做加签加密的,也是必须要在脚本中处理的。这也是符合真实业务逻辑的。
共 3 条评论2 - 🌻Naomi2020-03-03TPS的趋势是否应该跟线上流量分布一致?
作者回复: 应该,这个说法方向最正确。
2 - 吴小喵2020-02-19老师,怎么计算压测服务器已使用的带宽可以详细说一下吗
作者回复: 没明白这个问题是什么已使用的带宽不需要计算,直接用命令就能看。比如说iftop。
2 - Geek_admin2022-01-22请教几个问题: 1. 我看留言中有说梯度压测是通过Ramp-up来实现 但网上普遍再说用Stepping Thread Group插件来做,这两者哪种更合适? 2. 另外Ramp-up假如是10s内启动10个线程,那就是平均1s启动1个 对于接口而言,请求到拿到返回的时间是较短的,那么前1秒请求的接口已经返回了,第二个10秒也只会有一个请求,这时候等于每1s内只有一个请求,TPS曲线应该不会存在梯度?展开
作者回复: 1,都可以实现。但我推荐用前者,根据我的经验,插件本身的性能就不好。 2,启动了之后还会持续的,不能停下哦。
1 - cathy2020-08-04老师好,老师讲的都是通过压出梯度来确定并发数,想跟老师确认一下以下做法是正确的吗:使用jmeter,然后设置集合点(同步定时器),大量的线程数(几百个),循环次数设为1,来做瞬间一次性并发,看看系统能不能承受住,如果没报错并且响应时间可接受,就说可以支持几百个并发
作者回复: 不正确。
1 - 小破鸟儿2020-07-10老师我看输出message的脚本是在RPC里,是说服务端的接口代码中不要有打印信息的代码是吗,不是说的jmeter工具吧?而且后面也说,不管是什么压力工具,都要在压力测试中把日志关掉,关的都是服务端代码里的吧。
作者回复: 这里的日志是说的jmeter工具中的日志。服务端的日志应该根据生产环境的配置来配置测试环境。
1 - Geek_66dcc62020-04-24问题1.Ramp-up 配置有什么样的作用 Ramp-up 时间长度决定了启动所有线程数所用的时间,如果ramp-up 时间过短,就不能看到阶梯型的TPS 和RT 时间的变化过程,不利于分析TPS 和RT,同时有可能数据不可信。调整ramp-up的值, 到能看到RPS和RT的趋势变化。 问题2:为什么说压力工具中 TPS 和响应时间曲线抖动过大会不易于分析 分析TPS 和RT 的曲线是基础数据,如果基础数据抖动过大,那分析结果也会不完美。所以要尽量找到原因拿到完美的阶梯上升曲线。展开
作者回复: 理解的很好。
1 - 不将就2020-04-19老师,请问文章中提到的Send-Q大,是因为服务端网卡往压力机写数据需要排队导致的吗?如果客户端IO大,服务端就会等待,导致Send-Q积压大,我这样理解有问题吗?
作者回复: 没问题。
共 3 条评论1 - 追风筝的人2021-12-21在性能分析中,前端的性能工具,我们只需要关注几条曲线就够了:TPS、响应时间和错误率。
作者回复: 对的。
- 七月的雨2021-12-08之前碰到过开了日志之后tps比较低,但我理解的是压力发起机的问题,因为读取不到所有的数据,而实际的tps在内网肯定会比公网高,这样理解对不。
作者回复: 打开日志后tps低应该去看打开日志的机器上的资源消耗,应该不是压力机的问题哦。
- jy2021-07-101.文中说“将粒度改小,JMeter 默认是 60 秒,这里改为 1 秒”,请问这是在哪里改? 2.看了队列,发送队列大,这个是什么原因呢?这里没动,后面就转到了客户端压力工具了。 请老师解答下,谢谢展开
作者回复: 1,配置文件。 2,发送队列大,所以要看对端。
- 一步2021-01-17响应时间 和 PTS 的曲线趋势 必要要有明显的梯度趋势吗? 翻了一下之前的阿里云PTS压测报告,好像都没有出现明显的梯度趋势,刚开始都是斜线上升的
作者回复: 递增连续是场景最基本的要求。要想分析性能,没有趋势是很难判断合理不合理的。 如果你只是做下验证,那就无所谓了。
共 2 条评论 - windy2020-11-27Ramp-up 配置的调整,可以使tps的趋势变缓或者变抖。请问老师,经过参数调整,趋势图合理后,是用趋势图中的最大线程数进行后续的测试吗?如果测试目标是找到系统最大的tps的话。
作者回复: 不是,直接用递增的就可以。