发布时间:2023-07-05 11:30
接着上一篇的知识:性能测试能力提升-JVM GC监控和优化,本篇文章,我们将主要介绍全链路压测相关的知识:
1、业务发展速度快:单纯扩容应用的服务器可能提升不上去了,因为要受限于其他的模块,比如,DB,公共组件,中间件等。
2、链路的复杂程度在扩张:随着业务的发展,我们的接口会越来越多,业务线跟其他业务线的交互也越来越多,已无法单纯的根据自己系统的处理能力来评估接口的服务能力。
3、对单机压测结果越来越没有自信:一般而言,我们都会压一下我们自己的模块,但是身为模块的owner,自己越来越清楚,单机的压测不代表真实的场景,内心会越来越虚。
进行全链路压测前,必须梳理核心链路的流程和边界。梳理核心链路比较快,比如:
登录》搜索》加购》结算》下单
难点在于梳理清楚链路的边界:
1、搜索要关注商品
2、加购要关注促销、优惠券
3、结算要关注时效、运费、风控
4、下单后要通知营销发券、积分
5、分支系统能不能压测:
分支业务是第三方的
分支业务不重要,可以降级
分支业务本身就不能压测
为确保全链路压测不产生脏数据,不影响正常业务,需要提供底层支持,需要重点考虑处理以下事项:
1、全链路透传压测标志
2、影子表
3、日志-影子目录
4、MQ支持是否消费压测流量
5、缓存/大数据隔离
1、用户数据要提前做好认证等准备工作。
2、Mock数据要尽可能跟真实数据保持一致。
3、Mock数据有些限制需要放开, 适合压测反复使用。
4、千万不要污染正常数据:认真梳理数据处理的每一个环节,确保mock数据的处理结果不会写入到正常库里面。
1、当业务特别的复杂的时候,要确认好,第三方依赖能不能接收压测流量。
2、只要依赖第三方的服务,我们都要接入压测流量降级的开关,防止对第三方服务的污染。
每个业务梳理自己的监控,确保压测时候能够准确,及时的发现问题:
真实的压测之前,肯定要进行预演,主要确认:
压测的方案要尽可能的模拟现实:
压测的时候,阶梯式平稳加压,及时监控指标,不要一开始就高并发
除了要花时间梳理流程和思考如何处理数据之外,最难的就是整个链路跨多个业务,甚至部门,需要跟进每个业务线的进度,确保大家能够在给定的时间点进行联调以及进行压测。人力的组织和协调上,是一大难题,通常需要至少总监级别的人来整体规划、推动。
综上所述,可以看出全链路压测是一项技术含量高,人力耗时大的工程,需要各个条线的研发、测试、运维、DBA共同配合协作才能完成的事项,并且需要针对各个应用、中间层、数据库做一系列的改造。因此更适合公司业务体量已经比较大的大公司开展,由于体量大,链路影响才不那么可控,才更需要整体链路拉通整体实施压测,投入产出比也才能接受,而且也具备能真正做好全链路压测的实力。
反之,如果是体量不那么大的公司,真没必要跟风去做什么全链路压测,投入产出比太低,最后也不一定能做好。各个应用分别针对业务流量高的接口做好单接口的压测,加上同一个应用的多个接口混合压测,整体上就足以保障业务的正常性能需要,根据自身情况选择最适合自己的方式即可。
============================================================================
以上就是本次的全部内容,也是本次性能测试能力提升系列的最后一篇文章。当然,我也会陆续更新其他性能测试相关的文章,比如之前发布过的:
如果对你有帮助,欢迎关注我的微信公众号:程序员杨叔,各类文章都会第一时间在上面发布,持续分享全栈测试知识干货,你的支持就是作者更新最大的动力~