30丨案例:为什么参数化数据会导致TPS突然下降?
高楼
该思维导图由 AI 生成,仅供参考
写这篇文章的时候,我想起来一句似乎无关紧要的话:“我离你如此之近,你却对我视而不见。”
在性能测试中,参数化数据是少有的每个性能测试工程师都会用得到,却经常出现问题的技术点之一。从我的角度来说,究其原因,大部分是因为对性能参数化数据的理解不足。导致的结果就是用了参数化,但和真实的用户场景不一致,从而使得整个性能测试场景都失去了意义。
这样的例子不在少数。
一个项目开始之初,由于没有历史沉淀的数据,所以我们需要造一些数据来做性能测试。造多少呢?并不是按未来生产的容量来造,而是按性能场景中需要的数据量级来造。这种错误的做法是很多项目中真实出现的事情。
这并不止是性能测试工程师之过,还有很多其他的复杂原因,比如时间不够;经验不足,只能造重复的数据等等。
那么性能测试参数化数据的获取逻辑到底是什么呢?我们来看一个图吧。
在这个图中,我用不同的颜色表示不同组件中的数据。压力工具中的参数化数据有两种,这一点,我们前面有提到过,参数化数据有两大类型:
用户输入的数据同时在后台数据库中已存在。
用户输入的数据同时在后台数据库中不存在。
当我们使用数据库中已存在的数据时,就必须考虑到这个数据是否符合真实用户场景中的数据分布。当我们使用数据库中不存在的数据时,就必须考虑输入是否符合真实用户的输入。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文通过案例分析了性能测试中参数化数据错误使用导致TPS下降的情况。作者指出,对性能参数化数据的理解不足是主要原因之一。文章深入浅出地介绍了对操作系统、应用和数据库的性能数据查看和分析过程,通过对CPU使用率、堆曲线趋势等多方面的分析,最终得出DB没有问题的结论。在没有其他监控工具的情况下,作者采用了抓包的手段进行分析,详细解释了TCP segment of a reassembled PDU的含义和影响。最终发现数据库自己耗时了两秒来做reassemble PDU,导致了SQL执行慢的问题。文章以案例为线索,强调了性能测试中参数化数据的重要性和正确使用方法,对性能测试工程师具有一定的借鉴意义。文章还提到了数据分布不均衡可能带来的性能问题,以及在性能分析中全局监控和定向监控的重要性。整体而言,本文通过实际案例深入浅出地介绍了性能测试中的问题排查和解决方法,对于性能测试从业人员具有一定的借鉴意义。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能测试实战 30 讲》,新⼈⾸单¥59
《性能测试实战 30 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(8)
- 最新
- 精选
- 坚持半途而废这个问题,我们一般是查日志,多执行几次,看看是不是同样的时间段波动。把响应时间长的流水打印出来,看日志主要时间消耗在哪,定位是应用还是数据库问题。
作者回复: 嗯,你这个手法是比较理智的。
2021-11-0324 - 凌空飞起的剪刀腿经常通过tcpdump抓包了,不过老师这次抓的包,竟然能分析出db慢,太强了
作者回复: 也是花了很长时间的。
2020-04-041 - Geek_8e5c47数据分布和生产不一致,压出来性能结果很难预估生产真实性能的情形
作者回复: 理解的很正确。
2020-03-051 - 凯耐亲身经历造的数据有问题导致TPS突然下降(一个用户下面造了1w多张不符合业务场景的数据,导致优惠券查询列表接口rt特别慢),切记造的数据一定要符合生产环境的业务场景
作者回复: 多么痛的领悟,你曾是.......
2022-11-21归属地:广东 - kaixin老师,第一张图应用服务器查看top 时,一共120任务,119sleep 不用管吗?
作者回复: 不用管。我们主要看下面的process table。
2021-01-13 - 蔡森冉抓包就只会用fillder,拿到接口基本数据,但是老师我还是不明白为什么抓包可以判断出响应时间?
作者回复: 看前面的时间戳。
2020-03-26 - 啊啊现在我只能看到压测工具上的响应时间,如果链路较长,通过什么手段可以准确麻烦每个链路的响应时间? 目前做法:可以从最后面的链路一层层压上来,再计算每一层的响应时间。有没有其他的监控工具可以直接把每一层的时间拿到?
作者回复: 请看skywalking那一章。有你要的答案。
2020-03-122 - 小老鼠最好可以从线上釆集测试数据2020-03-25
收起评论