陈显铭(山丘)
读完需要
6
分钟速读仅需 2 分钟
陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构、服务化、性能优化等有深入的理解。参与支付宝支付链路核心系统,设计、调优应用系统关键能力, 高效、稳定保障系统平稳支撑大促。曾历经多年双十一大促,对于性能调优、构建高可用系统有丰富的实战经验。熟悉常见的性能优化模式,比如应用结构优化、链路级、单系统优化等多种优化方式。对于常见的压测模式,如单机压测、链路级压测都有深厚的积累。作为一名性能专家,以追求性能最大化为己任,与之相伴的自然是高技巧、高难度的代码优化。这也是一名性能专家的毕生追求。
通过性能优化的常见模式及趋势,我们大概知道了性能优化的一些招式,但是发现有性能问题的常见模式还是压测。本章列举常见的压测模型并对其进行阐述分析。
1
压测模型抽象
压测模型可以被抽象为图 18.1 的模型。该模型主要包含如下三大部分。
压测任务管理:负责对压测场景、目标、策略进行管理。比如对支付业务场景进行压测时需要持续 30 分钟,且需要使 QPS 的压力值达到 1WQPS 等。
压测任务执行:通过单机、分布式等压力机执行压测策略层下的压测任务,并在压测系统中输出相关监控指标。
压测结果分析:压测机会产出相关的系统性能日志,之后通过监控系统、工具体系进行数据分析,分析压测情况,优化压测策略,找到系统瓶颈。
图 18.1
1.1
压测环境准备
环境准备是压测的基础,下面是需要准备的主要软件和硬件环境的内容。
压力机资源。
被压测系统。
依赖资源(压测数据、第三方依赖)。
1.2
压测执行闭环
压测是一个不断调整压测参数、进行压测、找到问题、解决问题、再次验证等一系列
过程的组合,并不能一次性就可以做到完整、极致。整个的压测过程是一个闭环过程,这个过程可以拆分为如下的几个方面:
使用压力机进行压测。
分析程序收集压测数据(RT、QPS/TPS、成功率、错误、内存、I/O 等)。
分析压测报告。
确定优化计划。
反馈到压测系统或者调整压测策略。
2
线下压测模型
线下压测模型最多,也是最容易实现的。对于有技术实力的公司,开发环境和压测环境是隔离的。图 18.2 所示的是分布式系统结构的线下压测模型拓扑图,实线是同步调用,虚线是消息类调用。
图 18.2
线下压测模型的优缺点如下。
2.1
优点
可以实现快速压测。
压测场景可以自由自定。
可以进行稳定性测试或者链路性能回归。
2.2
缺点
仿真度不高。
环境部署复杂。
多个压测任务一般不能并行。
存在环境问题:
依赖系统可能缺失。
测试环境和线上环境的数据量不一样。
服务化后,线上各应用是集群部署,比如 A 可能是 1000 台,B 可能是 100 台, 是 10:1 的比例关系,但是线下的比例一般是 1:1,这个比例是失真的。
3
线上引流压测模型
线上引流压测模型是使用比较多的高仿真压测,其模型结构如图 18.3 所示。该模型的优缺点如下。
图 18.3
3.1
优点
真实的业务场景测试。
可以按需缩容。
可以快速回退。
3.2
缺点
<
无法对链路节点进行压测(与全链路压测相比,该压测方式存在着数据库流量可能不够、网络节点不全等问题)。
很难进行超出业务流量的压测。
很难评估链路性能。