容量保障核心技术与实战
吴骏龙
前阿里巴巴本地生活 P8 高级专家
5387 人已学习
新⼈⾸单¥29
登录后,你可以任选2讲全文学习
课程目录
已完结/共 19 讲
容量保障核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

06 | 全链路压测:系统整体容量保障的“核武器”(下)

你好,我是吴骏龙。
上一讲,我为你讲解了在正式实施全链路压测前,我们要做的三项改造工作,包括数据隔离、中间件改造和应用服务改造。这一讲,我们就正式进入两项压测工作:压测模型构建和压测流量构造,把全链路压测的建设过程完整展示给你。除了技术工作之外,在这一讲中我还会与你分享全链路压测的组织协调和运营工作,它们对全链路压测的完整落地同样起到至关重要的作用。
我们先看看如何构建压测模型。

两项压测工作:压测模型构建

构建压测模型的重点是准确度,如果模型与真实场景相差过大,那么压测结果的可参考性将会大打折扣,下面是一些典型的由于压测模型不准确导致压测结果无效的反面教材:
下单链路中,压测用户没有使用红包,导致对营销服务的压测结果偏优。
压测用户数据未考虑 sharding 分布,导致数据库单片过热。
压测用户数量过少,使用有限的压测用户反复下单后,导致单个用户订单量过多。
压测商户数量过少,压测时针对单个商户的操作过于密集,导致菜品扣减库存的锁争抢激烈。
压测模型包含业务模型和数据两部分,我再来通过几个实例讲解一下如何构建尽可能真实的场景。
实例一: 读请求
读请求由于不会对数据造成污染,因此可以直接使用真实请求和数据进行回放。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

全链路压测是系统容量保障的重要手段,本文从压测模型构建和压测流量构造两方面详细介绍了全链路压测的关键要点。在构建压测模型时,准确度至关重要,需要避免模型与真实场景相差过大,文章通过实例讲解了如何构建尽可能真实的场景。在压测流量构造方面,根据流量规模的大小选择合适的压测工具,或者考虑自研一套压测平台。全链路压测的建设过程主要包括中间件改造、应用服务改造、构建贴近真实场景的压测模型以及构造大规模压测流量。文章强调了利用生产环境信息构建压测模型的重要性,以及全链路压测在技术层面的建设要点。此外,组织协调和运营工作同样重要,建立一支强有力的全链路压测团队,通过流程和机制的制定,去管理和规范各个团队的工作,是推动全链路压测落地的关键。文章提供了具体可操作的方法,如全链路压测常态化执行制度和容量问题分级规范。总的来说,全链路压测是一项综合性工作,需要技术、组织和运营等多方面的考量和推动。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《容量保障核心技术与实战》
新⼈⾸单¥29
立即购买
登录 后留言

全部留言(10)

  • 最新
  • 精选
  • 莫_努力增肥25斤
    测试场景也是一方面,一般都是通过日志找出高频接口的调用比例,但低频接口也会出问题,而且往往从来未压测和优化过,甚至没几个人知道这功能存在,由于太低频在各种监控和统计里完全透明,一出问题就是阻塞db。

    作者回复: 说的非常好!低调用量≠低风险

    2021-05-25
    3
  • 勿更改任何信息
    现在全链路压测基本上都是验证峰值QPS,如果想验证整天的创建订单量达到了一定的量级,有可能要压几个小时,甚至十几个小时,这个压测合适吗?

    作者回复: 你好,全链路压测不适合长时间的压测测试或稳定性测试,主要原因有两点: 1.全链路压测一般在生产环境的低峰期实施,如果时间过长,压测工作跨越到高峰期,容易造成不必要的风险。 2.全链路压测会产生大量的数据,也需要投入人力持续值守和监控,成本比较高,不适合长时间执行。 除此之外,绝大多数服务容量的瓶颈都发生在高并发和高吞吐量的场景下,对于需要进行长时间压测来检测的问题(如:内存泄露、GC问题、磁盘容量瓶颈等),一般在线下测试环境进行测试也已经足够了,即便线下测试不完整,这些问题也可以通过简单的线上监控提前感知到,因此在这些问题上引入全链路压测的性价比并不高。

    2021-09-13
    1
  • Roy Liang
    原因可能是全链路压测不能完全复刻外部依赖接口,例如银联支付等场景

    作者回复: 回答的不错!对外部依赖的第三方接口调用处理不好,很容易成为全链路压测场景失真的一个因素。改进这一点的策略就是尽可能仿真,比如针对支付场景,我们可以mock支付回调,并按照真实回调的响应时间设置一定的延时,甚至可以制造一些波动,来尽可能逼近实际情况。

    2021-05-24
    1
  • 终身学习者
    压测置信度的影响因素: 1.压测流量的构造是否接近真实用户流量 2.压测链路是否完全覆盖 3.是否加入了背景流量或者低流量调用 4.底层基础架构是否和线上保持一致或者相同,如数据库分片一致、存储集群相同等 5.外部依赖的第三方接口mock、模拟异常 6.流量模型是否和线上一致,如短时突增流量、较长时间稳定高流量等模型

    作者回复: 总结的很好,尤其是最后一点,非常考验功底

    2022-01-07
  • Tricklet.
    压测出现1k/s的异常,这里的1k/s应该是指网速吧。那s1等级的标准应该比s0松一点吧(至少网速大于1k/s才合适呀),这里老师辛苦看下标准是否有误呢?或者是我理解有问题!请老师解答

    作者回复: 你好,这里的标准本身没有问题,1k/s指的是异常量(即每秒抛出1k次异常),异常量的制定标准需要参考流量(不是网速),没有严格的标准,一般来说是一个经验值。

    2021-10-18
  • dalek
    针对于常态化压测中值守人员的问题,是否可以使用无人值守或者减少值守人员的方式来做?比如采集相关指标对压测配置修改、压测状态同步…这个有尝试过么?是否有效?

    作者回复: 这是一个很好的思考方向,狭义的压测执行期间的无人值守,在技术上的难度并不大,由压测平台按照预置的策略去自动化施压,并对接外部监控系统(指标需要提前设置),在识别到风险时主动熔断压测或变更策略,完全可以做到不需要人的干预。风险在于对接的监控指标的完备性,但一般互联网公司的NOC团队都是随时处于值班状态的,可以兜底风险。 广义的说,我们还希望能做到压测全流程的无人值守,包括压测前(准备压测脚本&数据)和压测后(分析结果&输出风险项)的低人力甚至无人力投入,这就有很大的难度了。业内是有一些实践的,比如通过埋点的方式自动从流量入口梳理链路;包括类似于你提到的通过定期采集线上各接口的流量数据,去反向对齐压测时各接口的压力配比,等等,都是在朝着这个方向努力。

    2021-06-04
  • 车江毅
    https://gitee.com/chejiangyi/lmc-autotest 全链路压测实践 分享无人值守,自动化日常压测的例子。
    2022-11-24归属地:浙江
    1
  • 胡心鹏
    醍醐灌顶
    2024-03-16归属地:江苏
  • 车江毅
    如何做到无人值守,这个是个好问题!!!
    2022-11-24归属地:浙江
  • 于加硕
    全链路压测 压测频率跟不上服务变更的频率
    2022-06-28
收起评论
显示
设置
留言
10
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部