测试背景
评估服务器资源及几个重要接口的并发性能。
测试需求
由开发提供的5个重要接口:
业务场景 | URL | 访问量(万) | TPS | 请求比例(%) |
随手借点-首页产品接口 | /suishoujiedian-webservice/loanProduct/v3/terminal/listAllLoanProduct.do |
| 73 | 19 |
贷款超市-产品配置 | /cardniuoperation-webservice/product/listProductTree.action |
| 73 | 19 |
贷款超市-banner位 | /cardniuoperation-webservice/bannerConfig/getShow.action |
| 26 | 6 |
贷款超市-统计上报 | /cardniuoperation-webservice/loanStatService/addLoanStat.action |
| 149 | 37 |
贷款超市-活动配置 | /cardniuoperation-webservice/loanGiftWebService/getLoanGiftItemByActivity.action |
| 68 | 19 |
其中,访问量来自于线上服务器的一天访问量总和,涉及到五个负载机。前四个接口有四个负载机,最后一个接口有两个负载机。
TPS采用二八原则(即80%的访问是在20%的时间内完成),随后计算出每秒的访问量。
测试方案
通过线上监控的接口访问量以及网卡流量可知,一天中,系统用户活跃时间为24小时,根据二八原则(80%的请求是在20%的时间内完成的),可计算出TPS。如上图所示,得到每个接口要达到的TPS。按照各请求的占比设计脚本,然后执行压测,观察各接口响应时间以及服务器资源利用情况。
性能指标
指标 | 阈值 | 备注 |
CPU | <70% | 过高会导致系统服务不稳定 |
内存使用率 | <70% | 同上 |
磁盘使用率 | <70% | 同上 |
网络带宽 | <70% | 过高会导致网络延迟,响应时间变长 |
测试环境
负载机IP:
测试机IP:
数据库IP:
测试脚本
使用Jmeter测试工具,用Java编写测试变量处理过程,如用户ID随机获取及加密,循环发送请求,并且按照请求的比例来模拟线上用户并发访问系统。
测试数据
贷款超市-产品配置接口,userid由现网环境下导出100个。
贷款超市-统计上报接口,udid、userId由随机整数生成然后加密,loanBehavior范围为click, load_break, load_success, load_server_error, loanproduct_submit,loanproduct_refuse_contacts, loanproduct_refuse_location, home_click, load_product。
测试结果
并发用户数 | 混合场景接口平均响应时间(ms) | 总TPS | 请求总数(10分钟) |
100 | 168 | 591 | 354655 |
150 | 256 | 583 | 349867 |
200 | 334 | 595 | 357477 |
下面列举出100用户并发下的性能指标,从下图可以看出TPS(等同于Throughput)远远大于根据现网访问量计算出的TPS,平均响应时间很低。
- 响应时间和TPS
随手借点-首页产品接口返回数据较大,响应时间在751ms,其余接口响应时间在100ms以下,属于正常范围。
五个接口的测试环境下TPS均远大于线上TPS,性能良好。
- 服务器资源利用率
CPU利用率在70%以下,正常(测试时间从14:39到14:49)。
测试结论
从上面的结果来看,在单个服务器情况下,压测接口的TPS大于现网服务器TPS的总和,可以满足接口日常访问量三倍的需求。