前面的几篇文章介绍了全链路压测准备阶段的很多事项,包括核心链路梳理、构建压测模型、容量评估和容量规划,大多都是研发和运维同学负责的事情。
那么全链路压测在准备阶段,测试同学要做哪些事情呢?以我个人的实践经验来说,全链路压测在准备阶段,测试同学要做的事情主要有如下几点。
一般来说,需要准备如下三套环境。环境准备阶段,大体的工作事项和分工如下:
功能验证环境即用来验证技术组件本身的功能正确性和接入性能损耗的环境,有独立的随时可用的环境最好。
如果考虑到成本,也可以用线下性能环境来进行验证。实践经验来说,功能验证阶段,要做的事情核心有如下几点:
如果未经基础的测试就直接在生产环境开展全链路压测,风险和问题排查成本都是很高的。
线下性能测试环境的作用如下:
因为全链路压测都是在生产环境进行,压测的目的也是为了满足未来某个时期业务活动的需要,因此需要提前评估准备资源。
这里的资源指的是扩容的资源,而非单独重新搭建环境的资源。一般需要准备的资源如下:
全链路压测过程中,涉及的数据以及职责分工如下:
铺底数据可以简单理解为冷数据,因为SQL执行过程中,空表和大表对性能的影响还是很大的。
准备铺底数据,还要根据具体的数据隔离技术实现方案来看,分为如下2方面:
为了避免压测时瞬间的大流量对服务的冲击,需要提前将这些热点数据预热到缓存中。最典型的热点数据莫过于用户的登录态token了,其他还有类似秒杀活动的库存数据、商品信息数据以及优惠券等数据。
当然,热点数据的预热,需要根据具体的业务来制定预热方案,而非单纯的照着做。
参数化数据指的是压测过程中脚本中需要引用到的数据。以电商业务来说,常见的有用户id,商品id,订单id。
准备参数化数据的过程中,需要注意如下几点:
做完了上述的几点数据准备工作,最后要做的就是对数据可用性进行验证,看看它是否如预期满足工作需要。
脚本准备实际上是个很复杂的事情,因为要考虑到具体的业务场景和压测链路。
我在实践中的做法,一般遵循如下的过程步骤:
1、梳理核心链路(得到被测应用和涉及到的接口);
2、梳理流量模型(便于压测过程中性能指标监控及流量模型配置);
3、划分脚本类型;
脚本开发完成,接下来就是联调工作。
联调阶段,除了要考虑环境因素,重点是验证数据模型和流量模型是否匹配的问题。
编写压测方案的目的:同步信息,打平信息差,保持整体的压测节奏一致,为下一阶段工作做铺垫。
上一个:Nacos服务发现基础应用
下一个:Halo 开源项目学习注册与登录
Chile Address 版权所有
Powered by WordPress