1.测试内容:登录接口、用户详情接口、获取区域接口。
2.测试结果:通过,满足需求。
3.测试结果指标:
(172.23.22.83为数据库服务器,下面简称83
172.23.22.84为应用服务器1,下面简称84
172.23.22.85为应用服务器2,下面简称85)
CPU使用率: 小于80%
由于nginx机制是ip_hash,本次测试选用jmeter作为压测工具,所以同一台PC发出的压测,会压测到一台服务器上,由于84和85两台服务器的配置一模一样,这里是假设负载均衡已成功,针对一台服务器进行讨论,20个并发用户数的情况下,最大CPU使用率为小于62%,满足性能需求。
83服务器为数据库,结果显示CPU小于20%,完全能符合需求。
●内存使用率:小于80%
83内存所有场景压测最大使用率为:55.6%
84内存所有场景压测最大使用率为:45%
85内存所有场景压测最大使用率为:44%
●Swap in、swap out:长期为0
●Wa%:小于30%
三个服务器的wait%都为0。没有请求等待。
●磁盘消耗:小于90%
83磁盘所有场景压测最大使用率为:
84磁盘所有场景压测最大使用率为:
85磁盘所有场景压测最大使用率为
●网络吞吐量:小于70%宽带
●慢sql语句:响应时间小于1s
设置83服务器long_query_time为1,执行所有压测以后,慢日志文件中除了测试用的select sleep(2)语句外没有其他sql语句被捕获。证明所有压测中所有sql都满足小于1s的需求。
●内存泄露:无内存泄露
●Full gc频率:间隔大于半小时
●Full gc时间:每次FGC小于2s
●Ygc频率:间隔小于3s
●Ygc时间:每次ygc时间小于100ms
第二章.测试详述
第2.1. 测试环境
本次测试中,由于redis是只针对验证码使用,所以86和87两台redis服务器不在本次性能测试中进行考虑。
第2.2. 测试内容
1.登录接口:http://218.205.115.243:10081/BaiyeOperatorManage/login/validate
类型:post
参数头:Header:Content-Type application/json;charset=UTF-8
参数体:"eyJsb2dpbk5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiYWRtaW4xMjMiLCJ5em0iOiIyMjIyIiwia2V5IjoiZTFmNjI1NWRhZjIyNDE2NmE4MzdjYjZmZTEyMWEzODQifQ=="
返回值:
{
"code": 200,
"msg": null,
"data": {
"username": "admin
"userid": "61a11e509a4211e5a44b525400ad729f"
},
"draw": 0,
"recordsTotal": 0,
"recordsFiltered": 0,
"error": null
}
2.用户详情测试:http://218.205.115.243:10081/BaiyeOperatorManage/user/detail
类型:get
参数头:Header:Content-Type application/json;charset=UTF-8
userId:(登录返回的usrId)
Jwt-Token:(登录返回的token)
返回值:{
"code": 200,
"msg": null,
"data": null,
"draw": 0,
"recordsTotal": 0,
"recordsFiltered": 0,
"error": null
}
3获取区域测试:http://218.205.115.243:10081/ BaiyeOperatorManage/area/getAreaTree
类型:get
参数头:Header:Content-Type application/json;charset=UTF-8
userId:(登录返回的usrId)
Jwt-Token:(登录返回的token)
返回值:
{
"code": 200,
"msg": null,
"data": [
{
"areaCode": "12
"areaName": "天津市
"children": [
{
"areaCode": "12
"areaName": "天津市
"children": null,
"level": 1
}
],
"level": 1
}
]
}
第2.3. 测试风险
1.没有实际数据量参考;测试数据量不能保证达到实际使用情况。
2.本次测试未选择可进行ip欺骗的测试工具,比如loadrunner,导致未能验证出84和85两台应用程序的负载均衡是否正常。
3.本次测试环境如果非正式上线环境,不能保证正式上线的性能要求。
第2.4. 测试场景设计
单业务场景测试
登录
用例编号 | XN001 |
用例名称 | |
测试目的 | 登录测试满足最多20个并发用户数,95%小于2s |
前置条件 | 验证暂时disable |
并发用户数 | 并发数分别为1, 5, 10, 20. |
思考时间 | 未设置思考时间 |
用例编号 | XN002 |
用例名称 | |
测试目的 | 用户详情满足最多20个并发用户数,95%小于2s |
前置条件 | 验证暂时disable,用户已经登录获得对应的token. |
并发用户数 | 并发数分别为1, 5, 10, 20. |
思考时间 | 未设置思考时间 |
用例编号 | XN003 |
用例名称 | |
测试目的 | 获取区域满足最多20个并发用户数,95%小于2s |
前置条件 | 验证暂时disable,用户已经登录获得对应的token. |
并发用户数 | 并发数分别为1, 5, 10, 20. |
思考时间 | 未设置思考时间 |
混合以上场景
用例编号 | XN004 |
用例名称 | |
测试目的 | 混合场景满足最多20个并发用户数,95%小于2s |
前置条件 | 验证暂时disable。 |
并发用户数 | 登录、用户详情和获取区域共同测试,按照50%、25%,25%的比例进行并发用户数1,10,20来进行。 |
思考时间 | 未设置思考时间 |
用例编号 | XN005 |
用例名称 | |
测试目的 | 混合用户场景持续测试24小时,验证性能需求 |
前置条件 | 验证暂时disable。 |
并发用户数 | 持续时间24小时。 |
思考时间 | 未设置思考时间 |
由于获取区域性能测试,包含了登录功能,同时也是几组测试中IO量最大的,所以在此罗列并发20个用户的获取区域截图,供参考:
响应时间图:
根据50%和90%定律可知,50%用户的通过时间为0.4″,最大响应时间为0.977″,90%的响应时间小于0.59″,根据方差算出0.8,小于1,说明偏离度较小,整体性能良好。
83服务器的性能:
CPU使用率小于10%,完全满足性能所需,IO最大吞吐量为23,disk最大write为152KB/sec,内存使用为55.6%=2280.4/4096. 综合来看,83服务器满足20个并发用户数的性能需求。
84服务器的性能:
由于单个IP被负载均衡机制都压测到84这台服务器上,所以结果只贴84服务器来说明,从图中可以看到CPU利用率已达58%,虽然小于80%性能要求,不过也已经有一点小风险。 Disk的最大write为140kb/sec, 内存使用率为44%=1809/4096. 满足性能所需。
JVM性能图
观察得如果在只测试单次20个用户并发的情况下,年轻代gc的频率大于等于3分钟,年老代的GC分配区域较大,即使在单次20个用户并发的情况下,FGC的频率也大于30分钟。每次GC时间都小于2S,满足性能需求