蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点

陈显铭(山丘)

读完需要

6

分钟

速读仅需 2 分钟

陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构、服务化、性能优化等有深入的理解。参与支付宝支付链路核心系统,设计、调优应用系统关键能力, 高效、稳定保障系统平稳支撑大促。曾历经多年双十一大促,对于性能调优、构建高可用系统有丰富的实战经验。熟悉常见的性能优化模式,比如应用结构优化、链路级、单系统优化等多种优化方式。对于常见的压测模式,如单机压测、链路级压测都有深厚的积累。作为一名性能专家,以追求性能最大化为己任,与之相伴的自然是高技巧、高难度的代码优化。这也是一名性能专家的毕生追求。

蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点_第1张图片

通过性能优化的常见模式及趋势,我们大概知道了性能优化的一些招式,但是发现有性能问题的常见模式还是压测。本章列举常见的压测模型并对其进行阐述分析。

1

   

压测模型抽象

压测模型可以被抽象为图 18.1 的模型。该模型主要包含如下三大部分。

  • 压测任务管理:负责对压测场景、目标、策略进行管理。比如对支付业务场景进行压测时需要持续 30 分钟,且需要使 QPS 的压力值达到 1WQPS 等。

  • 压测任务执行:通过单机、分布式等压力机执行压测策略层下的压测任务,并在压测系统中输出相关监控指标。

  • 压测结果分析:压测机会产出相关的系统性能日志,之后通过监控系统、工具体系进行数据分析,分析压测情况,优化压测策略,找到系统瓶颈。

蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点_第2张图片

图 18.1

1.1

   

压测环境准备

环境准备是压测的基础,下面是需要准备的主要软件和硬件环境的内容。

  • 压力机资源。

  • 被压测系统。

  • 依赖资源(压测数据、第三方依赖)。

1.2

   

压测执行闭环

压测是一个不断调整压测参数、进行压测、找到问题、解决问题、再次验证等一系列

过程的组合,并不能一次性就可以做到完整、极致。整个的压测过程是一个闭环过程,这个过程可以拆分为如下的几个方面:

  • 使用压力机进行压测。

  • 分析程序收集压测数据(RT、QPS/TPS、成功率、错误、内存、I/O 等)。

  • 分析压测报告。

  • 确定优化计划。

  • 反馈到压测系统或者调整压测策略。

2

   

线下压测模型

线下压测模型最多,也是最容易实现的。对于有技术实力的公司,开发环境和压测环境是隔离的。图 18.2 所示的是分布式系统结构的线下压测模型拓扑图,实线是同步调用,虚线是消息类调用。

蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点_第3张图片

图 18.2

线下压测模型的优缺点如下。

2.1

   

优点

  • 可以实现快速压测。

  • 压测场景可以自由自定。

  • 可以进行稳定性测试或者链路性能回归。

2.2

   

缺点

  • 仿真度不高。

  • 环境部署复杂。

  • 多个压测任务一般不能并行。

  • 存在环境问题:

  1. 依赖系统可能缺失。

  2. 测试环境和线上环境的数据量不一样。

  3. 服务化后,线上各应用是集群部署,比如 A 可能是 1000 台,B 可能是 100 台, 是 10:1 的比例关系,但是线下的比例一般是 1:1,这个比例是失真的。

3

   

线上引流压测模型

线上引流压测模型是使用比较多的高仿真压测,其模型结构如图 18.3 所示。该模型的优缺点如下。

蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点_第4张图片

图 18.3

3.1

   

优点

  • 真实的业务场景测试。

  • 可以按需缩容。

  • 可以快速回退。

3.2

   

缺点

  • 无法对链路节点进行压测(与全链路压测相比,该压测方式存在着数据库流量可能不够、网络节点不全等问题)。

  • 很难进行超出业务流量的压测。

  • 很难评估链路性能。

线上引流压测是不错的压测模式,其使用的关键技术如下。

  • 流量的控制能力。可以按需切换流量,Web 层(诸如使用 Ngnix)以及服务和服务调用之间也需要按需切换。如果想要对流量有更强的控制,则建议在需要控制的各层加入代理层,在代理层上可以实现路由算法,通过调整路由算法达到控制的目的, 比如可以扩展 Ngnix 的模块。如果使用的是 Dubbo,则可以扩展服务调用的寻址逻辑。

  • 服务监控能力。如何在线上进行压测并快速识别压测情况?如果压测在单台机器上进行,登录一台机器即可确认情况,但是如果有多台机器怎么办?必须依靠自动化监控核心指标。

服务化后的系统使用普通的线上压测模式很难发现链路上的问题,所以就需要使用下面要介绍的线上全链路压测模型。

4

   

线上全链路压测模型

目前,在阿里巴巴已经实现了线上全链路压测模型的落地,如图 18.4 所示,用于对大促等爆发流量进行模拟。使用完全真实的线上环境进行高仿真的线上压测,可以按照线上真实的容量部署情况进行链路压测。

蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点_第5张图片

图 18.4

线上全链路压测模型的优缺点如下。

4.1

   

优点

  • 高仿真。

  • 可以构造比日常容量大得多的请求量。

4.2

   

缺点

该模型的实施成本很高,一般的公司可以不这么做,用前面的方式已经足够了。

5

   

总结

本章介绍的几种压测模型是现在主要使用的模型,可能会有一些变体模型,但不会相差太大。压测时还有些需要注意的点,诸如要小心压力机的瓶颈。现在常用的工具有 JMeter 等,在此不做详解。

- EOF -

想要加入中生代架构群的小伙伴,请添加群合伙人大白的微信
申请备注(姓名+公司+技术方向)才能通过哦!

往期推荐

京东平台研发朱志国:领域驱动设计(DDD)理论启示

2020-10-27

架构专家高磊:缓存为王——无线缓存架构优化

2020-10-22

三湘银行中台总助黎慧剑:银行业务中台建设实战

2020-10-21

阿里文娱技术专家战獒: 领域驱动设计详解之What, Why, How?

2020-10-20

蚂蚁集团技术专家山丘:性能优化的常见模式及趋势

2020-10-18

阿里专家马飞翔:一文读懂架构整洁之道

2020-10-16

美团技术专家云鹏:写给工程师的十条精进原则!

2020-10-15

架构专家李伟山:电商系统之订单系统

2020-10-14

DDD专家张逸:构建领域驱动设计知识体系

2020-10-13

京东架构师闫文广:订单系统高可用架构及演变过程

2020-10-12

前阿里高级技术专家杜仲:再谈中年危机和应对策略

2020-10-10

阿里高级技术专家张建飞:面对复杂业务,if-else coder 如何升级?

2020-09-30

阿里专家常昊:新人如何上手项目管理?

2020-09-29

快狗打车CTO沈剑:如何利用计划管理提升团队效率和产能

2020-09-27

阿里技术专家麒烨:修炼测试基本功

2020-09-16

蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点_第6张图片
   END     
#架构师必备#

点分享点点赞点在看

你可能感兴趣的:(编程语言,人工智能,java,大数据,数据库)