测试目的

针对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.3G tatal:26G used:15G
压测机器 宏碁4750 单个双核四线程 win10 单机 8G total:8G used:3G

测试方法

压测工具和指标

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

测试时间

测试时间:9:00-12:00(工作时间) ,内网环境压测
针对每个接口分别执行并发数10、30、90、270并发数执行120秒

统计指标

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

测试结果(第一轮)

汇总表

接口名称 数据量 并发数 持续时间 samples average min max median 90%Line 95%Line 99%Line error% tps(s) received(kb/s) sent(kb/s)
pla(post) limit 10 120s
api/nonmetalPla/list 10 5113 233 73 2458 191 345 408 827 0 42.41921434 1672.45209 21.91383241
api/nonmetalPla/list 30 5323 673 146 8692 543 1196 1561 2619 0 43.96775313 1733.505954 22.71380996
api/nonmetalPla/list 90 6224 1737 161 26447 1262 3238 4445 8283 0 49.34982556 1945.703621 25.49419699
api/nonmetalPla/list 270 7586 4298 155 44290 3359 7611 9445 15606 0 59.22213375 2334.936724 30.59424683
查询基础数据(post) limit 10
/api/warehouse/searchCarType 10 2602 459 113 3458 393 692 937 1496 0 21.5274388 1078.600366 11.28929163
/api/warehouse/searchCarType 30 4456 805 105 7980 670 1369 1712 2686 0 36.9694355 1852.298689 19.38729186
/api/warehouse/searchCarType 90 5044 2150 172 11822 1781 3441 4277 6622 0 41.092654 2058.886432 21.54956562
/api/warehouse/searchCarType 270 6504 5022 154 79084 3997 8100 10222 17749 0 51.1437356 2562.480956 26.82049416
根据父类编码查询下级字典(post) limit 10
/api/dict/findDictByParentCode 10 652 1842 225 12681 1505 2617 5084 6542 0 5.201643464 3.682313378 2.722735251
/api/dict/findDictByParentCode 30 1942 1861 267 11447 1489 3467 4896 6968 0 15.58337346 10.10484372 8.156922043
/api/dict/findDictByParentCode 90 5464 1986 284 23215 1604 2840 5219 6941 0 43.72669217 28.97468862 22.88819043
/api/dict/findDictByParentCode 270 16931 1921 72 14632 1505 3356 5021 6597 1.07 131.6268411 88.65045632 68.13092412
jdbc连接 limit 10
压测数据库查询m_dict数据 10 17390 66 10 13343 40 116 179 312 0 145.2 145.46 0
压测数据库查询m_dict数据 30 18909 181 10 8165 118 351 474 845 0 157.5 157.78 0
压测数据库查询m_dict数据 90 15052 709 13 12010 538 1106 1566 6648 0.48 125.1 124.78 0
压测数据库查询m_dict数据 270 19391 1681 13 10848 1517 2593 3232 7707 0 158.1647635 158.47 0

接口压测实况图

下面抽取并发量为90的情况下各个测试接口的资源情况tps、响应时间
admin系统后台接口压测报告V1.0
admin系统后台接口压测报告V1.0
下面抽取并发量为90的情况下各个测试接口的资源情况,分别是内存和cpu状况图、响应时间、tps

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

admin系统后台接口压测报告V1.0
admin系统后台接口压测报告V1.0
admin系统后台接口压测报告V1.0
二、/api/warehouse/searchCarType (查询基础数据(post) )
admin系统后台接口压测报告V1.0
admin系统后台接口压测报告V1.0
admin系统后台接口压测报告V1.0
三、/ api/dict/findDictByParentCode (根据父类编码查询下级字典(post) )
admin系统后台接口压测报告V1.0
admin系统后台接口压测报告V1.0
admin系统后台接口压测报告V1.0
四、压测数据库查询m_dict数据 (jdbc连接 )
admin系统后台接口压测报告V1.0
admin系统后台接口压测报告V1.0
admin系统后台接口压测报告V1.0

测试结果第二轮…进行中

汇总表

接口压测实况图

测试结果分析

结论:

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

相关文章: