背景

去年双十一,为了应对零点的峰值流量冲击,我们在八月下旬启动了全链路压测第一次实践。由于从零开始,因此单独搭建了一套和生产1:1的环境,2个月的时间,光环境成本就高达几百万。经过双十一,压测团队从中汲取了不少的经验和教训。双十一之后,在CTO的指导下和支持下,由基架和性能测试团队快速的投入了全链路压测平台的研发当中。并且趁着核心系统重构,快速的接入落地,对后续的系统稳定性保障工作,迈出了坚定地一步。

流程导图

梳理阶段

1、系统服务梳理

全链路压测是一个很复杂的工程,其中涉及到多个服务。对整个业务系统进行梳理,确认流量传递的上下游和范围,是首先要做的事情。

2、核心链路梳理

什么是核心链路?现在来看,依然是一个艰难的选择。压测团队在梳理核心链路时,主要从如下几方面来评估:

1)是否是高频访问业务;

2)是否是强依赖的核心环节;

3)是否直接影响生产的交易业务;

4)参考生产实际的QPS指标为维度;

3、外部依赖梳理

确定核心链路后,要对其外部依赖进行进行梳理(比如第三方支付)。由于全链路压测在生产环境进行,因此需要对外部依赖进行mock处理,避免对生产服务造成影响。

4、中间件梳理

为了避免压测流量对生产造成影响,产生脏数据,需要对整个流量传递过程中涉及的中间件进行梳理,让压测流量透传落影子库。压测流量模拟在请求网关接口时候在header中带上:x-infr-flowtype=PT,各个中间件路由逻辑如下:

mysql:影子库;

redis:影子key,前缀ptshadow_;

mongodb:影子collection,前缀ptshadow_;

kafka:不分topic,下游路由会进行相应路由;

rocketmq:不分topic,下游路由会进行相应路由;

hbase:影子namespace,前缀ptshadow_;

elasticsearch:影子索引,前缀ptshadow_;

分布式锁fusion-distributed-locks:影子key,前缀ptshadow;

准备阶段

1、接入fusion框架

全链路压测基于fusion,所有中间件和规范必须按fusion统一规范使用。

2、流量模型梳理

流量模型,也可以称之为流量漏斗。即外部流量从网关开始,在每个调用链路上的变化比例。

3、mock模块配置

对于外部依赖调用的链路,通过mock手段,进行对应的处理。

4、影子中间件建立

在梳理阶段对所有的中间件梳理完成后,即可根据规范进行对应的中间件建立。

5、测试环境验证

完成上述步骤,需要在测试环境验证mock配置、流量标数据落影子库的正确性。

6、仿真环境验证

测试环境验证通过后,接入仿真环境,进行联调验证,确保没问题,才能开始进入压测阶段。

预热阶段

1、测试用户生成

由于全链路压测的特殊性,因此需要造一批专门用来压测的user数据。

2、测试数据准备

测试数据包含基础数据和参数化数据(压测请求传参所用),我们的解决方案是通过定时的job来迁移生产数据并进行脱敏。

3、外部服务关闭

由于全链路压测的特殊性,因此在压测开始前,都会对外部服务进行服务注册下线,保证压测的流量不会影响生产业务。

4、分支代码发布

全链路压测是需要进行多轮的,这个过程中每次优化都可能涉及到代码变更,因此在压测开始前,需要确认最新的优化代码分支发布到了仿真环境。

5、网络隔离检查

同样,由于环境的特殊性,压测前需要对各服务的隔离情况进行确认,避免影响生产业务。

实施阶段

1、单机单接口基准

单机单接口的基准压测是必不可少的环节。通过单机单接口压测,可以快速排查出被测链路本身的性能问题,这样有助于后续全链路压测的开展和性能瓶颈定位排查。

2、单机混合链路

混合链路压测的目的,在于验证被测服务本身的最大容量和安全水位,为全链路压测以及上线容量评估,提供参考依据。

3、全链路压测演练

全链路压测,是互联网企业系统稳定性的重要保障手段。

4、脉冲摸高测试

摸高压测,目的是为了验证当前系统的最高性能表现,便于评估线上扩容,留有冗余空间。

5、限流功能演练

限流熔断,是服务可用性的重要保障手段。我们采用的技术框架是sentinel集群限流功能,并对单机、集群限流功能进行了演练,确保功能的可用性。

总结回顾

关键词:对技术&业务保持敬畏!

什么是预热 压测_全链路压测探索实践之路相关推荐

  1. dubbo 服务压测_全链路压测资料汇总——业内大厂解决方案

    最近忙于公司的全链路压测平台调研和技术规划文档输出工作,参考了全网能搜到的业内大厂的全链路压测方案,这里做个汇总,以及将个人认为可以落地的方案做一个关键点整理. 技术链接 滴滴全链路压测解决之道 阿里 ...

  2. 独家揭秘 | 阿里怎么做双11全链路压测?

    阿里妹导读:全链路压测是阿里的首创,我们将从工作内容.操作过程.运行总结等多个方向来介绍下阿里内部典型电商活动(如双11准备),以给大家展示一个完整的压测流程,帮助更多的企业和用户更好的完成性能测试. ...

  3. 【独家揭秘】阿里怎么做双11全链路压测?| CSDN 博文精选

    戳蓝字"CSDN云计算"关注我们哦! 作者 |  牛兔 转自 | CSDN企业博客 责编 | 阿秃 阿里妹导读:全链路压测是阿里的首创,我们将从工作内容.操作过程.运行总结等多个方 ...

  4. 阿里10年分布式技术沉淀:阿里高可用体系核心缔造者、全链路压测创始人告诉你!...

    原文链接 7月27日,云栖社区.阿里中间件将举办首届阿里巴巴中间件技术峰会,揭秘阿里10年分布式技术干货.目前活动官网已上线:https://yq.aliyun.com/promotion/262,  ...

  5. 阿里10年分布式技术沉淀:阿里高可用体系核心缔造者、全链路压测创始人告诉你!

    原文链接 7月27日,云栖社区.阿里中间件将举办首届阿里巴巴中间件技术峰会,揭秘阿里10年分布式技术干货.目前活动官网已上线:https://yq.aliyun.com/promotion/262,  ...

  6. 高德全链路压测——语料智能化演进之路

    背景 高德地图作为日活过亿的国民级出行生活服务平台,承载着海量用户服务的是后台的超大规模集群.从用户角度,如果出问题,影响会很大.3机房异地部署造成线上环境复杂,链路复杂.在这样的条件下,如何避免因故 ...

  7. 性能测试利器工具来了,生产环境全链路压测工具

    国内知名的系统高可用专家数列科技宣布开源旗下核心产品能力,对外开放生产全链路压测平台产品的源代码,并正式命名为Takin. 目前顺丰科技.希音.中通快递.中国移动.永辉超市.爱库存.浙江大学等50+行 ...

  8. 全链路压测需要如何开展?

    现在性能测试的趋势是全链路压测吗?全链路压测需要如何开展?需要怎样支持全链路压测?测试需要在其中提供什么样的价值? 做全链路压测之前,需要了解项目背景,为啥需要做全链路压测?是因为现在的服务规模.调用 ...

  9. 首个生产环境全链路压测平台Takin正式开源

    6月25日,国内知名的系统高可用专家数列科技宣布开源旗下核心产品能力,对外开放生产全链路压测平台产品的源代码,并正式命名为Takin. 目前中国人寿.顺丰科技.希音.中通快递.中国移动.永辉超市.爱库 ...

最新文章

  1. php 获取鼠标的坐标,如何实时获取鼠标的当前坐标-
  2. 线程池java.util.concurrent.ThreadPoolExecutor总结
  3. linux windows主题下载官网,Linux Deepin 15.10.2 桌面kwin主题App美化
  4. 读《中台架构与实现》
  5. 【转】VS编程,快速折叠或者展开代码到 #region 级别的设置方法。
  6. 软件测试基础:测试用例设计
  7. 面向对象 阶段性总结
  8. 中文编程对中文编程是否是一枚银弹
  9. iOS底层探索之Block(二)——如何解决Block循环引用问题?
  10. [华为19实习面试]语言能力优秀的我,是怎么拿下勇敢星实习offer的?华为硬件类面试经历经验分享(大三已拿offer)
  11. Windows XP精简版无添加删除组件选项而无法安装IIS的解决之道
  12. CodeBlocks 的下载安装
  13. 目前主流的数据库有哪些?
  14. sdk前置服务器 设备和商户信息不匹配,豌豆荚融合SDK接入常见问题
  15. 亚信安全助手、杀毒软件卸载
  16. 【氵贴慎点】matlab啊啊啊
  17. 如何在应用中打开系统播放器
  18. GTD和掌握Omni系列效率工具
  19. Linux centos7 搭建k8s集群步骤详解
  20. SpringCloud-3-Ribbon

热门文章

  1. php函数fiter,PHP filter_var() 函数和 Filter 函数使用说明
  2. Mysql - 解决Access denied for user ''@'localhost' to database 'mysql'问题
  3. 当前方法的代码已经过优化,因此无法计算表达式的值
  4. jquery 的队列queue
  5. IE6和其他浏览器的css样式不同
  6. c#中using 和new
  7. 计算神经生物学 计算机转生物,计算神经生物学的应用有哪些?
  8. android textview密文,TextView 明密文处理
  9. c语言对抗程序代码,C语言贪吃蛇源程序代码双人对抗
  10. 和pythondjango后端_webGIS实践:4_0_python django后端搭建web工程