对C的业务网站或应用,进行性能测试来评估使用服务器情况是必不可少的一项工作。
一、测试工具:
Apache JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能,是Apache组织开发的基于Java的压力测试工具Jmeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。通过使用jmeter,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
如我们对一台署了电商应用的服务器部进行测试配置如下:
服务器类型:ECS弹性云服务器
服务器CPU:4C(4核)
服务器内存:16G
服务器存储:50G(系统盘)+500G(存储)
服务器数量:1台
备注 说明:ecs.g7.xlarge+5M带宽
经验总结的数据规则:
1、二八法则(20%的时间完成80%的事情):
也叫帕累托法则,指电商行业中,20%的变量将产生80%的效果,电商平台常用来计算用户访问量和时间的分配情况,即平台80%访问,集中在20%的时间完成。
2、下单转换率(5%)
电商转化率=交易次数/访问数,目前行业普遍维持在5%的转化率。
3、黄金时段:(早10点到晚10点)
根据淘宝发布的统计数据,交易的‘黄金时段’为10:00-12:00、15:00-17:00、20:00-22:00;
根据京东新品发布时间段统计数据,新品发布‘黄金时段’为10:00-11:00、15:00-17:00。
结合以往电商项目,交易多发生在10:00-22:00(特殊活动日除外)。
二、压测前准备工作:
在进行性能测试之前,需要做一些必须的准备工作,主要包括:
- 测试功能点全部通过功能测试,确保功能上没有问题;
- 软硬件环境搭建就绪;
- 数据库备份;
- 对于每一个测试功能点,都要事先录制好相应的测试脚本,包括参数化,准备好测试数据,并且调试好,脚本能够成功的回放,保证在测试的时候能够顺利的运行;
- 测试数据准备就绪;
- 系统监控准备就绪;
- 测试结果验证方法准备就绪。
三、测试方法:
利用测试工具Jmeter编写脚本,模拟用户并发执行典型业务场景,记录事务响应时间、用户并发数、TPS等数据,并对应用服务器系统资源利用情况进行监控。
模仿虚拟用户:
虚拟用户:在本次测试中,一个虚拟用户即是一个线程。线程每次从流程图开始时执行,若未遇到异常则运行至结束,然后又从开始时运行,如此往复,直至手动停止或者运行时间结束。在执行脚本过程中,若出现异常,则跳至结束,并重新开始。
关键性指标:
迭代:一个虚拟用户执行完一次脚本即称之为一次迭代。
ART:事物平均响应时间。
TPS:系统每秒能够处理的事务数。
如测试一个查询用户详情信息的业务流程:
执行该脚本前,需先准备一批平台会员信息;
每次迭代使用的会员信息是顺序获取的。
按照上面的例子依次测试系统中场景得出性能数据即可。
四、测试结论
一般的结论
根据电商平台常用二八法则,即80%的业务集中发生在20%的时间段。用户购物行为普遍发生在每一天的10个小时(12:00-22:00),
9.08次/s*3600s/h*2h≈26万次
根据28定律换算:26万次/0.8≈6.54万次/天
即:每天可支持6.54万次的三方平台调用能力。
扩容建议就两项:
- 纵向扩容:如服务器及云服务CPU数量增加、内存增加、硬盘存储增加;
- 横向扩展:应用服务器数量增加,云服务数量增加。