基于Jmeter的web系统后端接口压测报告


一、测试目的

针对uat环境的用户并发量和系统瓶颈,都是未知的。
本轮压力测试,抽取部分代表性查询接口,主要是为了测试后台系统UAT环境主要接口吞吐量和响应时间,初步找出系统的瓶颈。

二、测试内容

压测接口清单

  • api/nonmetalPla/list(pla(post))
  • api/warehouse/searchCarType (查询基础数据(post) )
  • api/dict/findDictByParentCode (根据父类编码查询下级字典(post) )
  • 压测数据库查询m_dict数据 (jdbc连接 )

三、测试环境

环境机器型号CPU操作系统内存磁盘
应用服务器linux虚拟机CPUIntel® Xeon® Gold 6132 CPU @ 2.60GHz
4个单核四线程
CentOS Linux release 7.5.1804 (Core) 单机total:8G ,可用内存: free+buffers/cached = 2.3Gtatal:26G used:15G
压测机器宏碁4750单个双核四线程win10 单机8Gtotal:8G used:3G

四、测试方法

4.1、压测工具和指标
类别说明
压测工具apache-jmeter-5.1.1(单台win环境)
压测性能相关参数协议: http
方法: get/post
并发数 、总请求数、吞吐率(TPS)、响应时间、错误率
4.2、测试时间

第一轮压测:
测试时间:9:00-12:00(工作时间) ,内网环境压测(VPN内网,非完全内网
针对每个接口分别执行并发数10、30、90、270并发数执行120秒
第二轮压测:
测试时间:7:50-09:30(工作时间) ,内网环境压测(VPN内网,非完全内网
针对每个接口分别执行并发数10、30、90、270并发数执行120秒
第三轮压测:
测试时间:09:00-09:30(工作时间) ,内网环境压测(VPN内网,非完全内网
针对pla接口30并发数执行120秒

五、统计指标

进行压力测试,并对产生的每秒TPS,响应时间(min,ave,max)及错误率进行统计

六、测试结果

6.1、第一轮压测

时间:9:00-12:00(工作时间)

6.1.1、聚合报告
接口名称数据量并发数持续时间samplesaverageminmaxmedian90%Line95%Line99%Lineerror%tps(s)received(kb/s)sent(kb/s)
pla(post)limit 10120s
api/nonmetalPla/list105113233732458191345408827042.419214341672.4520921.91383241
api/nonmetalPla/list3053236731468692543119615612619043.967753131733.50595422.71380996
api/nonmetalPla/list9062241737161264471262323844458283049.349825561945.70362125.49419699
api/nonmetalPla/list270758642981554429033597611944515606059.222133752334.93672430.59424683
查询基础数据(post)limit 10
/api/warehouse/searchCarType10260245911334583936929371496021.52743881078.60036611.28929163
/api/warehouse/searchCarType3044568051057980670136917122686036.96943551852.29868919.38729186
/api/warehouse/searchCarType9050442150172118221781344142776622041.0926542058.88643221.54956562
/api/warehouse/searchCarType2706504502215479084399781001022217749051.14373562562.48095626.82049416
根据父类编码查询下级字典(post)limit 10
/api/dict/findDictByParentCode10652184222512681150526175084654205.2016434643.6823133782.722735251
/api/dict/findDictByParentCode3019421861267114471489346748966968015.5833734610.104843728.156922043
/api/dict/findDictByParentCode9054641986284232151604284052196941043.7266921728.9746886222.88819043
/api/dict/findDictByParentCode270169311921721463215053356502165971.07131.626841188.6504563268.13092412
jdbc连接limit 10
压测数据库查询m_dict数据1017390661013343401161793120145.2145.460
压测数据库查询m_dict数据30189091811081651183514748450157.5157.780
压测数据库查询m_dict数据901505270913120105381106156666480.48125.1124.780
压测数据库查询m_dict数据270193911681131084815172593323277070158.1647635158.470
6.1.2、接口压测实况图(90并发)

下面抽取并发量为90的情况下各个测试接口的资源情况,分别是内存和cpu状况图、响应时间、tps
在这里插入图片描述
在这里插入图片描述

一、api/nonmetalPla/list((post))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二、/api/warehouse/searchCarType (查询基础数据(post) )
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三、/ api/dict/findDictByParentCode (根据父类编码查询下级字典(post) )
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
四、压测数据库查询m_dict数据 (jdbc连接 )
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.1.3、第一轮压测分析
  • 带宽、内存、内存、磁盘等指标在网页查看一直表现的比较正常,在命令行直接进去服务器查看,cpu有超过100%的几次状况。
  • 并发数在90以内时,接口响应时间基本能保证在2s内
  • 普通数据库查询接口tps有提升空间,pla接口在10-270的并发下均能保持40tps以上
  • warehouse查询(post) 接口相比pla接口仍较慢,可做进一步优化,考虑字段过多,sql查询方面的问题
  • 根据父类编码查询下级字典(post)接口耗时非常严重,需要比较优先优化,考虑索引和sql方面的问题
  • 数据库压测tps只有120-150左右,需要进一步提高,考虑服务器性能方面和mysql配置问题,在非工作时间有尝试压测
  • 对于接口耗时较长的情况,目前引入了redis,但是目前用的地方很少,redis几乎闲置,接口可以考虑结合使用redis

一次压测数据不一定是准确的,有主要以下几点

  • 服务器网络变化
  • 服务器性能改变
  • 压测主机网络变化
  • DB数据量的变化
  • 压测过程中部分请求 error / 超时影响
6.2、第二轮压测

压测时间:07:50-9:30(工作时间)

6.2.1、聚合报告
接口名称数据量并发数持续时间samplesaverageminmaxmedian90%Line95%Line99%Lineerror%tps(s)received(kb/s)sent(kb/s)
pla(post)limit 10120s
api/nonmetalPla/list10TOTAL4038296959299233496630934033.498419651330.28636217.30533593
api/nonmetalPla/list30TOTAL513469876788260292111073601042.688351751695.23615622.05286921
api/nonmetalPla/list90TOTAL58301873157125181717229335155551047.524720191887.29760424.55134471
api/nonmetalPla/list270TOTAL51306483459265155727101251191116345040.13236641593.73308620.73244319
basedata(post)limit 10
/api/warehouse/searchCarType10TOTAL427245194178984266156768530.00234082422.095446952040.37272211.56003959
/api/warehouse/searchCarType30TOTAL3028118618744921120158618072567025.128839242325.84094313.17791667
/api/warehouse/searchCarType90TOTAL21465096264379613563106781495024020016.605280261536.9289588.708042481
/api/warehouse/searchCarType270TOTAL2916117792575532010512170292001827637021.096496941952.62088611.06329966
根据父类编码查询下级字典(post)limit 10
/api/dict/findDictByParentCode10TOTAL31344371932562837562450261.1586499392.5030881136.7002308
/api/dict/findDictByParentCode30TOTAL693395121712042581322150577.6083969868.1048074302.3418952
/api/dict/findDictByParentCode90TOTAL873351222214538942192745000727.28862541093.063666380.6901398
/api/dict/findDictByParentCode270TOTAL9465533922612529645149613310786.7134321182.374973411.7953121
jdbc连接limit 10
压测数据库查询m_dict数据10查询4365324945491830441390363.6689299364.37922080
压测数据库查询m_dict数据30查询190691872022843833415219810158.7694101159.07950660
压测数据库查询m_dict数据90查询3177433310944823157680518140264.096682264.61249580
压测数据库查询m_dict数据270查询27057119626156329022004239845200222.8252366223.26044210
6.2.2、接口压测实况图(90并发)

下面抽取并发量为90的情况下各个测试接口的资源情况,分别是内存和cpu状况图、响应时间、tps
在这里插入图片描述
在这里插入图片描述
一、api/nonmetalPla/list((post))
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二、/api/warehouse/searchCarType (查询基础数据(post) )
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三、/ api/dict/findDictByParentCode (根据父类编码查询下级字典(post) )
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
四、压测数据库查询m_dict数据 (jdbc连接 )
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2.3、第二轮压测分析
  • 二轮压测发现pla接口和warehouse接口都是比较相近的tps结果数据,
  • 数据字典接口翻了将近10倍,其数据也是不多的,但是结果差别如此的大。
  • 压测数据库查询tps也翻了一倍,
    根据以上几个现象,首先能确定的是虽然内网环境,但是走vpn的情况下,网络存在不稳定,当前数据库仅该后台系统在使用,说明数据传输的耗时主要受网络方面的影响大。
    结合第一轮压测出现的一些问题,两轮下来,需要第三轮的测试,
    第三轮主要是判断数据量大小的网络传输,是否明细影响压测结果
6.3、第三轮压测
6.3.1、聚合报告
接口名称数据量并发数持续时间samplesaverageminmaxmedian90%Line95%Line99%Lineerror%tps(s)received(kb/s)sent(kb/s)
pla(post)
api/nonmetalPla/list1030120s5207689745609608105413562167043.31717.9122.35
api/nonmetalPla/list130120s1740820548570711331747221200144.8629.974.65
api/nonmetalPla/list030120s47035752421001521201873210391.8171.41208.88

在这里插入图片描述

6.3.2、接口压测实况图(30并发)

下面抽取并发量为30压测的情况下各个测试接口的资源情况,分别是内存和cpu状况图、响应时间、tps
压测接口:api/nonmetalPla/list((post)
并发量:30
在这里插入图片描述
在这里插入图片描述

一、查询0条
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二、查询1条
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三、查询10条
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3.3、第三轮压测分析
  • 数据量大小的网络传输影响非常大
  • 数据量越小传输越快,当前VPN的内网受VPN或内网网速影响较大
  • 接口的数据量有必要缩减,会有明细的tps提升

七、结论

结合压测一、二、三分析,得到以下一些结论和建议:

  • 主要问题在网络环境,网络的提升对压测tps的影响非常大。

  • 工作时间的早上刚上班期间,服务器和带宽都是比较宽裕的状况,这几个目标接口的压测结果tps都提高了很多,vpn连接的内网压测对数据的准确性仍然有一定的影响

  • 在网络正常的情况下,接口tps仍然只能在50左右。

  • 服务器性能不是非常稳定,虚拟linux多个地方共用主机导致有波动,也影响接口性能,单独部署到一台服务器会事比较好的选择

  • 数据库压测tps120-150,200+均出现,从二轮压测可以看出,除了网络之外,数据库tps仍可以继续提高,本地机器能达到1000tps,可以向着这个目标接近。

  • 所有接口不需要的字段尽量缩减不返回到前端,可做进一步优化,考虑字段过多,sql查询方面的问题

  • 对于接口耗时较长的情况,目前引入了redis,但是目前用的地方很少,redis几乎闲置,接口可以考虑结合使用redis

  • 考虑下一轮的压测中直接在机房另一台linux/win下专门压测,并使用命令行方式直接导出报告的方式节省工作量

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值