3.1.2 云上大型赛事压力测试方法论
压力测试的六大核心要点:明确压测目标、梳理压测链路、设计压测方案、配置压测环境、实施压测计划、解决压测问题。
3.1.2.1 明确压测目标
明确压力测试最终需要达到的目标,是设计与实施整个压测方案的先决条件。目前常见的压测目标可分为两类:一类是基于系统监控找水位,即在系统资源濒临阈值时检查QPS以及对应RT,即为该系统的水位。一般用于评估业务系统可承受的QPS,从而判断当前系统架构是否可满足业务需求。一类是基于预估压力判断业务是否可正常运行,即在稳定的QPS下判断系统是否存在性能瓶颈,业务链路是否可正常运行。一般是用于在大型运营活动前,基于预估QPS对系统进行压测,提前找出性能瓶颈,保证运营活动正常运行。
对于大型赛事活动的压测一般是第二类,即首先由业务方预估赛时的压力情况,再通过压测系统模拟该压力找到系统瓶颈。这里需要注意的是,业务方需要给定一个明确的预估压力值,例如1000并发用户数、8万QPS等,如果没有最终目标,压测就会进入不知道压到什么程度才算完成的尴尬局面。并且,这个压力值是基于业务层模拟推导计算出来的,例如,冬奥通APP业务峰值是x万日活用户,对某个页面,根据业务观察,每个用户平均每天会打开10次,打开一次该页面的请求数为5个,那么我们考虑比较极端情况,假设所有用户的这10次请求都集中在某1个小时内,那么该页面的QPS要求即为:xk * 10 * 5 / 3600 = x QPS。再例如,云展厅项目有一个高并发的秒杀业务,预估用户数为8k,假设用户的一次点击产生一次请求,那么这个业务的QPS要求即为8k QPS。
3.1.2.2 梳理压测链路
梳理目标系统整体的架构及业务链路,可以体系化的帮助理解当前系统的业务链、业务链之间的依赖关系、功能点所在的业务位置等等,是后续抽象压测模型、划分压测场景、设计压测方案、解决压测问题的关键依据。通常来讲,链路梳理的越细致,后续的工作就会越流畅。
对于大型赛事而言,子系统繁多,链路间调用关系复杂,梳理起来对应的工作内容会比较多。一个比较好的最佳实践是根据系统架构图来理解每条接口链路情况,在下文冬奥通APP压测总结中我们将会看到,一个完整详细的系统架构图对链路梳理起了非常大的帮助。
在梳理过程中也可以同时分析潜在的瓶颈点,并针对性的增加监控指标、制定应急预案等。例如,负载均衡产品潜在高频问题为容量不足、建连失败等,针对容量不足风险,可通过观察超限丢包指标来进行判断。数据库产品常见问题为连接池耗尽、慢查询等,可通过连接池监控、SQL语句执行时间监控等来进行判断。不同风险的判断指标需要落在压测方案中。
《云上大型赛事保障白皮书》——第三章 压测调优与技术演练——3.1 云上大型赛事压测调优——3.1.2 云上大型赛事压力测试方法论(下): https://developer.aliyun.com/article/1226643?groupCode=supportservice