XX 5.0系统 性能测试方案 |
修订历史记录
为保证在日常运行及大型活动期间,稳定运行、应用快速,对进行性能测试,验证系统是否能够达到业务所需的性能指标,同时发现系统中存在的性能瓶颈,并进行改进,起到优化系统的目的。主要包括以下几个方面:
服务器 |
数量 |
硬件配置 |
软件环境 |
作用 |
压测机1台 |
1 |
8C16G |
linux |
加压 |
应用服务器 |
(mzapipress:4台,UAC:2台) |
8C 16G*6 |
Tomcat |
应用服务器 |
数据库服务器 |
1 |
8C16G |
mysql |
数据库 |
redis |
1 |
8G集群版(2节点) |
缓存服务器 |
|
ES |
1 |
? |
? |
|
MQ |
1 |
共用PRE环境 |
||
nginx |
1 |
共用PRE环境 |
||
文件服务器 |
1 |
PRE服务 |
备注:服务器配置根据业务需要申请
脱敏、同步线上数据,保证被压测系统数据库量级和线上一致,
目前压测环境23万用户数据,线上1000万不都是活跃用户,有效用户数23万已足够
根据不同的业务场景,对应的具体接口入参可以从数据库提取、代码生成、计数器、随机数等方式来进行参数化,数据唯一性接口保证每次访问入参不重复,避免数据缓存造成压测误差
查询接口:在swagger中找到对应的api,通过参数去数据库导出入参数据。
写接口:根据业务需求造出对应入参数据。
类别 |
工具 |
判断维度 |
通过 |
备注 |
接口性能 |
Jmeter |
TPS |
参照4.2公式 |
|
超时概率 |
小于0.5‰ |
|||
错误概率 |
小于0.5‰ |
|||
响应时间 |
<200ms |
若在每天的某一时段里有很大的访问量,其他时间相对较少,可以用简单峰值法、二八法或九一法。
举例:
下图为2021年2月3日三亚地区推广力度较大的活动峰值数据,计算举例:
数据依据:活动流量,2月3号11点到12点一小时内访问量(打开次数)从1100激增到峰值52329,用户数从1500增加到峰值27198,一天内总访问量为9.04万,11点到13点之间总访问量为7.56万,总访问人数4.88万。平均页面停留时长20S
计算方法:根据活动集中访问的特殊性,按1/9原则计算活动并发数(90%用户量集中在10%时间内完成),52329*90%/3600*10%=130.825个/s,
按2/8原则计算日常并发数: (9.04万*80%)/(8小时*20%*3600)=12.5个/s,
预估:预估两年内小程序用户数从1000万以30%的增长速度,并发数若要满足未来两年业务需求,活动应满足130.825*(1.3*1.3)=约221个/s,日常满足12.5*1.3*1.3=约21个/s
平均响应时间计算:响应时间的2-5-8原则,取2秒体验要求,减去网络及各节点时间损耗,接口响应时间<200ms为达标
TPS=并发数/平均响应时间,当前至少要满足131/0.2=655TPS,两年后:221/0.2=1105TPS,以上指标为最低tps要求。
错误率:(失败交易数/交易总数)*100%,参考标准:一般成功率不低于99.4%,成功率99.7%为达标
根据节点数、配置、以及性能瓶颈三个维度去估算出压测/线上系数比n(1),目前压测环境和生产环境节点配置一致,数据库及rides配置略低,若压测环境满足业务需求,则理论上生产环境能支撑相同压力
验证:同一个接口在同等并发下统计各环境tps,验证压测/线上tps系数比是否等于n(1)
资源 |
监控资源 |
通过 |
备注 |
CPU |
CPU sys% |
小于或者等于30% |
CPU指标主要指的CPU利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。 |
CPU利用率一般维持在70%左右的水平,高峰期达到90%的水平,是不浪费资源,并比较稳定的。 |
|||
CPU sys%小于或者等于30%, |
|||
CPU wait%小于或者等于5%。 |
|||
CPU wait% |
小于或者等于5% |
CPU Load要小于CPU 核数。 |
|
System\Processor Queue Length |
CPUload<4 |
||
内存 |
SWAP利用率 |
SWAP交换空间利用率要低于70% |
太多的交换将会引起系统性能低下。 |
硬盘 |
Physical Disk\% Disk Time Logical Disk\% Disk Time |
小于等于80% |
正常值<10,此值过大表示耗费太多 时间来访问磁盘,可考虑增加内存、 更换更快的硬盘、优化读写数据的算 法。若数值持续超过80 (此时处理器 及网络连接并没有饱和),则可能是内 存泄漏。 |
测试概述:
目的 |
|
方法 |
|
目的 |
|
方法 |
|
不断加大并发数、同时监控CPU,内存,CPUload,带宽,TCP连接数等各项性能指标,当某一指标达到瓶颈记录此时的并发数及性能瓶颈。
目的 |
|
方法 |
|
不断加大并发数,当RT和TPS出现交叉拐点时记录此时对应的并发数、RT、TPS及相应的性能资源参数。负载测试结果可在5.2压力测试结果文件中分析出最优性能,故此步测试可省略。
目的 |
|
方法 |
|
根据业务场景合理设计各个接口压力比,在确定比例之后,通过jmeter按比例施加压力,来检测系统在混合场景下性能。
按照日常平均使用量的80%,根据实际运行峰值时间段进行7*24小时测试,且资源利用率符合4.2节定义的标准。
5.6单台服务探容测试
目的 |
|
方法 |
|
综合活动、大型线上活动主要接口,并发数较高、调用率较高的接口,大型活动MZapi所有接口。
和各业务组SDM、TPM一起确认覆盖核心、关键、常用业务,从中提取接口。
根据APM监控,截取一段时间内实际业务调用频率TOP10接口、tps为TOP10接口,响应时长top10。
序号 |
角色 |
工作项 |
预计开始时间 |
预计完成时间 |
交付产物 |
一轮测试 |
|||||
开发/运维 |
环境搭建 |
环境准备 |
|||
1 |
测试 |
方案 |
性能测试方案 |
||
2 |
测试 |
脚本 |
性能测试脚本 |
||
3 |
测试 |
数据 |
数据 |
||
4 |
测试 |
运行脚本 |
执行压测 |
||
5 |
测试 |
报告 |
一轮性能测试报告 |
||
6 |
测试 |
优化 |
需要优化的接口清单 |
||
二轮测试 |
|||||
1 |
开发 |
优化 |
优化 |
||
测试 |
运行脚本 |
执行压测 |
|||
2 |
测试 |
报告 |
测试报告 |
||
3 |
测试 |
监测 |
稳定性测试(持续监测系统情况,有问题及时修复) |
||
4 |
测试 |
报告 |
稳定性测试报告 |
序号 |
风险类型 |
描述 |
等级 |
缓解策略 |
1 |
过程风险 |
由于加大并发导致接口大批量报错,压测无法进行下去 |
高 |
遇到阻塞问题及时抛出问题一起排查,推动艰难的及时找sdm沟通 |
2 |
环境风险 |
由于场景功能问题或对接系统环境达不到压测要求,致使调用接口不可用,导致的压测场景无法执行。 |
高 |
在环境部署完成后先进行基准测试,保证环境可用。 对接系统环境协调,尽量能满足压测调用 |
3 |
人员风险 |
开发调优资源不足,调优不能及时保障进度 测试人员兼做功能测试,测试进度会相互影响 |
中 |
根据测试方案时间安排,如有冲突提前报备 |
4 |
其他风险 |
由于不可预测原因导致压测不能按计划完成 |
中 |
每日同步性能压测进度,有风险及时抛出 |