当前位置:网站首页>性能测试知识应用于实战
性能测试知识应用于实战
2022-07-23 21:45:00 【程序员杨叔】
一、背景
随着各行各业都变得越来越卷,测试人员在压测的过程中,也不仅仅只是一个使用工具脚本施加压力的角色,而需要把自己变得越来越专业,将各类性能测试知识应用于压测实践中,从而达到在整个压测的过程中,测试的作用相比以前能有比较明显提升的效果。今天以第三人称的口吻,主要列举几个在压测中实际发生的案例,希望能通过这样的方式,有更直观的感受,对后续想深耕性能测试方面的同学有所帮助。
案例一:分布式压测
以前:
研发:接口TPS上不去,增加线程数
测试:好的,从200增加400线程
研发:怎么TPS还是没什么变化呢,接口响应时间也很快
测试:额…我也不太清楚,我换成2台压力机试试
a few moments later…
测试:额,TPS真的上来了哦~
研发:那为啥你1台压力机的时候上不来呢?
测试:我也不知道哦,不管了嘛,反正已经压上来了
研发嘀咕:他的压测脚本不会有什么问题吧…
现在:
研发:接口TPS上不去,增加线程数
测试:好的,从200增加400线程
研发:怎么TPS还是没什么变化呢,接口响应时间也很快
测试:额,可能是压力机瓶颈,我去看看压力机的资源情况
登录zabbix监控平台, 查看压力机的CPU、内存、磁盘、网络使用情况:
测试:网卡流量打满了,压力机网卡单网口流量上限2个G,我们接口返回的数据量太大了,大并发压测时把单台压力机的网卡流量打满,我需要换成多台压力机分布式压测。
换成多台压力机分布式压测后,TPS果然上去了。
研发:666666…
案例二:按比例混合压测
以前:
研发:我们来个混合压测吧,两个接口按比例1:9发送请求到服务器
测试:额…我试试吧
于是两个接口分别执行压测,1个接口设置线程数100,另外1个接口设置线程数900,同时点鼠标执行压测。
a few moments later…
研发:耶,不对呢,咋请求量不是1:9呢?
测试:额…应该差不多吧,凑合着看吧,差不过有那个效果就行
研发嘀咕:…这小子到底会不会哦…
现在:
研发:我们来个混合压测吧,两个接口按比例1:9发送请求到服务器
测试:好,稍等我设置一下
于是一个jmx文件里放上这两个接口,使用jmeter吞吐量控制器,设置1000线程数,按比例10%和90%分配给接口1和接口2,执行压测。
a few moments later…
研发:嗯,可以可以,请求比例确实是1:9的比例,接口性能良好,压测通过~
案例三:Arthas排查接口性能问题
以前:
测试:接口响应时间很长呢,研发,看一下呢
研发:我看看呐…
a few moments later…
研发:还没找到原因,硬件资源看起来是没什么问题的,我再看看调用链
a few moments later…
研发:调用链也没太大问题,好像是我自己接口代码耗时比较长,我再检查检查代码
a few moments later…
研发:好像是这段日志代码的问题,我注释下日志,发版再试试看
a few moments later…
研发:发好了,测试,来,再试一下. 测试…我去,居然睡着了
测试:啊? 改好了吗?哦,我再压一下试试…
研发嘀咕:哎,要测试有啥用,我自己点一下jmeter也行啊…
现在:
测试:接口响应时间很长呢, 研发,来,运行Arthas, 我们trace下接口代码,看看哪里耗时长呢
研发:哟,你还晓得Arthas哦,来哇,看一下
trace接口代码发现,耗时最多的地方是输出日志的这行代码,日志内容较多,造成日志打印耗时长,进而在大流量并发下造成接口性能下降。
测试:我去…说了多少遍了,大哥,本地调试完之后不用的日志要及时注释掉,看吧,又是日志的问题
研发:哎,忘了忘了,我马上改一下
a few moments later…
研发:发好了,来再试试
测试:可以了,TPS明显上升,下回不要再踩日志的坑了哦
研发:嗯嗯,好
==============================================================================
以上就是本次的全部内容,如果对你有帮助,欢迎关注我的微信公众号:程序员杨叔,各类文章都会第一时间在上面发布,持续分享全栈测试知识干货,你的支持就是作者更新最大的动力~
边栏推荐
- Construction and application progress of ten billion level knowledge map of meituan brain
- Compare kernelshap and treeshap based on speed, complexity and other factors
- & 9 nodemon automatic restart tool
- 博客总排名为918
- Euclidean clustering (API) and its single tree segmentation
- Postgraduate entrance examination | advanced mathematics Chapter4 indefinite integral
- Basic knowledge of mobile phone testing
- 欧氏聚类(API)及其单木分割
- Day109. Shangyitong: integrate Nacos, hospital list, drop-down list query, hospital online function, hospital details query
- Yushu A1 robot dog gesture control
猜你喜欢

Basic principle of synchronized lock

数据库系统概论第五版课后习题——第一章 绪论

query中的customer exit客户出口变量

【HiFlow】腾讯云新一代自动化助手,我用它完成了企业疫情提示(无代码)
![[complex overloaded operator]](/img/ff/aafaa9471a1bd6ef57f6a619449e80.png)
[complex overloaded operator]
![[Yugong series] June 2022.Net architecture class 084- micro service topic ABP vNext micro service communication](/img/29/b73edbdb2409f40c904d126f9185d1.png)
[Yugong series] June 2022.Net architecture class 084- micro service topic ABP vNext micro service communication

Scala programming (intermediate advanced experimental application)

基于速度、复杂性等因素比较KernelSHAP和TreeSHAP

Kuberntes cloud native combat VI uses rook to build CEPH cluster

Be a professional software craftsman
随机推荐
JS object array de duplication
Practice data Lake iceberg lesson 37 kakfa write the enfour, not enfour test of iceberg's icberg table
Scala programming (elementary)
大学数据库创建与查询实战——数据库表设计
集群聊天服务器:如何解决跨服务器通信问题 | redis发布-订阅
Cluster chat server: how to solve the problem of cross server communication | redis publish subscribe
Problems and abuse of protocol buffers
Serveur de chat de Cluster: conception de la table de base de données
博客总排名为918
Interval DP chain stone merging
Unity - 3D mathematics -vector3
【数学建模暑期培训】配送中心选址问题
uniapp使用canvas写环形进度条
【愚公系列】2022年06月 .NET架构班 084-微服务专题 Abp vNext微服务通信
[arXiv] notes on uploading papers for the first time
Several methods of obtaining longitude and latitude by cesium
Still have 1 requests outstanding when connection from slaveX/X.X.X.X:33202 is closed
query中的customer exit客户出口变量
Providers and consumers tags in zfoo
存储结构和管理盘。有点像装win98要先分区格式化硬盘