秒杀场景的特点:
定时开始、库存有限、操作可靠
一、开发人员需要注意的事项
现有的秒杀活动持续时间短,瞬间数量大,为了不影响其他业务的正常运行,需要把它从业务、技术、数据上做隔离,架构设计需要分几层来考虑,从客户请求到数据库存储,到最后上线前的压力测试。
1、数据库设计(数据量特别大的情况下可使用:分表、分库、加索引等)
2、redis+session管理
3、参数校验+全局异常处理
4、前端静态资源压缩整合
5、使用CDN
6、缓存
7、读写分离
隔离(业务隔离、系统隔离、数据隔离)、动静分离、分层校验(大量的数据做成是漏斗式设计)
参考链接:http://www.51testing.com/html/62/n-3720162.html
二、压力测试方案:
首先确定测试步骤,且同步确定测试要求,如下:
(1)确定测试目标:与性能测试不同的是,压力测试的目标是什么时候系统接近崩溃
(2)确定关键功能:针对核心功能进行压力测试,如:下单、库存扣减
(3)确定负载:不是每个服务都有高负载的,我们的测试其实是要关注那些负载量大的服务,或者是一段时间内系统中某些服务的负载有波动。这些都是测试目标。
(4)选择环境:建议搭建和生产环境一模一样的环境进行测试。
(5)确定监测点:实际上就是对关注的参数进行监视,例如 CPU 负载,内存使用率,系统吞吐量等等。
(6)产生负载:这里需要从生产环境去获取一些真实的数据作为负载数据源,这部分数据源根据目标系统的承受要求由脚本驱动,对系统进行冲击。建议使用往期秒杀系统的数据,或者实际生产系统的数据进行测试。
(7)执行测试:这里主要是根据目标系统,关键组件,用负载进行测试,返回监视点的数据。模拟不同的网络环境,硬件条件进行有规律的测试。
(8)分析数据:对关键服务的压力测试数据进行分析得知该服务的承受上限在哪里。对一段时间内有负载波动或者大负载的服务进行数据分析,得出服务改造的方向。
三、性能测试关注点
1、测试的目的:
(1)了解秒杀系统在高并发下,系统是否稳定
(2)了解秒杀系统性能瓶颈,并进行优化
(3)通过业务场景压力测试实施,为系统调优提供数据参考
2、业务分析:
(1)用户注册/登录页面并发测试
(2)用户填写信息页面并发测试
(3)用户提交订单页面并发测试
(4)后台数据库压力测试
3、测试指标
(1)用户并发数:15000
(2)交易响应时间:
<=3秒,性能优异,<=5秒性能良好,>=10秒,性能不好接受
(3)交易吞吐量:后台主机每秒处理事务数
(4)并发交易成功率>=99%
4、测试资源指标
关注服务器资源使用情况,监控的服务器包括API服务器和数据库服务器
系统CPU占用率:<=80%;系统内存使用率:<=80%;系统I/O使用率:<=80%