传统压测和全链路压测的区别

对于全链路压测和非全链路压测,以上步骤实施起来在性能测试执行环节区别较大,本文主要讲述全链路性能测试执行环节与传统压测的区别,以及对应的压测平台改造点

 

 

1.传统压测jmeter工具施压是基于并发线程数来控制压力大小的,且并发线程数只是一个增加压力的手段,实际TPS的大小取决于被压测系统的性能(jmeter是同步阻塞式IO压力模式,同一并发线程只有当一次请求接收到响应后才会继续下一次请求发起),换句话说,调整并发线程数时不知道TPS实际能够达到多少。全链路压测如果也是这种模式去施加压力,对系统的压力会是多少是未知的,这个过程中被压测系统稳定性就会存在极大风险,所以全链路压测平台有必要对压力发起模式做出改造,让性能测试工程师明确知道施加了多大的TPS,这也会让系统被压挂的可能性极大降低。

 

2.传统压测为了测出系统性能极限,会设置一个梯度增加并发线程数的容量测试场景,这种设置需要经过试压,而且梯度加压过程中如果发现性能表现不及预期,需要停掉压测后再去调整并发线程数、步长、梯度等,传统压测这种方式是没问题的,但如果在全链路压测中就比较反人类了,这就需要压测平台进行改造,让压力可随时调整,且该调整不会影响当前已经存在的压力。

 

3.传统压测在上下游接口有数据依赖的环节,往往会通过工具本身具备的关联功能去关联到值并引用赋值来实现,这种实现方式在全链路压测中不太适用,一方面使用关联就必须上下游接口TPS是一致的,另一方面全链路压测涉及到接口、链路环节众多,一条数据进入系统,有可能跨越了时空(时间上,某个接口的数据,下游接口需要处理,但不一定是立即需要处理,有多种异步情况,比如MQ、JOB;空间上,某个接口的数据在A数据库中存在,也可能在B数据库中存在,AB是两个不同的物理节点)。举一个物流行业的例子,你的快递订单下单后会有快递员过来接货然后给你开单接着是运输中转、派送、签收、结算、轨迹查询环节,一笔快递订单是不可能在一秒内或者短时间内就完成了这些流程,所以对应全链路压测中的上下游链路数据有关联的需要借助数据回传工具以及池化技术来实现,压测平台需要进行此类改造。

 

4.传统压测大部分是压力机部署在内网环境中,全链路压测为了模拟真实用户的网络链路,压力机需要放到外网环境中,压测平台需要进行此类改造以及防火墙策略放行,这样可以测试出企业入口网络流量是否有瓶颈也可以测试出一些安全高防产品是否有功能或者性能上的缺陷。

 

5.传统压测可能一个产品线就一个接口或者几个核心接口,且产品线或者接口之间联系较少。全链路压测中是基于N个产品线几十个或者上百个核心接口,对于这些接口之间的压力发起统筹、拓扑绘制,数据流转,性能表现需要有一个全局性的驾驶舱来操作和观察,压测平台需要进行基于此的改造。

 

6.传统压测所使用的的一般是测试环境,或者灰度环境或者生产环境只读压测,这些环境一定程度上均存在减配,不真实,覆盖面小的情况。全链路压测应该在生产环境进行,不仅在成本上有优势,而且在真实性上也比其他环境高不少,压测平台应该对接生产环境并进行网络打通。

 

转自https://www.modb.pro/db/194397

posted @ 2022-02-22 15:45  up~up  阅读(279)  评论(0编辑  收藏  举报