性能压测,是保障服务可用性和稳定性过程中,不可或缺的一环,但是有关性能压测的体系化分享并不多。从本期开始,我们将推出《Performance Test Together》(简称 PTT)的系列专题分享,从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能压测的理论体系,并提供有例可依的实战经验。
第一期:《压测环境的设计和搭建》,专题出品人 | 阿里巴巴 PTS 团队
一般来说,保证执行性能压测的环境和生产环境高度一致是执行一次有效性能压测的首要原则。有时候,即算是压测环境和生产环境有很细微的差别,都有可能导致整个压测活动评测出来的结果不准确。
1. 系统逻辑架构
系统逻辑架构,即组成系统的组建,应用之间的结构,交互关系的抽象。最简单最基本的就是三层架构。
三层逻辑结构图
更复杂的逻辑结构
以下是说明:
2. 物理架构
物理架构
3. 硬件、软件和网络
软件中对系统使用到的中间件有一个了解,不仅可以帮助设计更仿真的压测环境,也有助于在压测过程中,加快瓶颈,问题的定位和解决。
压测环境方案 | 适用场景 | 优点 | 缺点 | 成本 | 阿里及阿里云客户应用情况 |
---|---|---|---|---|---|
生产环境子集,少量服务器,低配置 | 项目开发交付初期,对应用本身进行性能问题探测 | 1.基于已有的测试环境搭建,相对难度小 2.成本较低 | 1.不完全仿真,无法压到全链路的问题,基础设施的瓶颈问题 | 低 | 阿里内部有一套独立完整的线下性能压测环境,与应用发布管理系统打通,被大量应用于项目开发前期的性能瓶颈探测场景 |
生产环境子集,少量服务器,同配置 | 服务器规模按照生产环境规模缩放,适用于容量探测 | 相比第一种压测结果更可信 | 1.按比例缩放的环境,压测结果也不能完全可信 2.底层基础设施的问题可能遗漏 | 较低 | 阿里内部智能容量规划系统所依赖的环境就是这种,按比例缩放的同配置压测环境 |
生产环境完全复制版 | 最理想的压测环境 | 1.压测效果能够保证 2.不受时间限制,随时可压 3.完全不影响生产环境的数据以及用户访问 | 1.成本相对高 2.单凭压测人员搭建,复杂度高 3.存在后续维护成本 | 高 | 阿里云上,PTS 已有客户使用该复制环境进行全仿真的性能压测。阿里云上快速复制系统一样的环境用于压测,操作简单快捷 |
生产环境 | 评测生产环境性能的最直接真实的 | 1.压测结果易于被认可。2.节约成本 3.压测基础设施易于部署 | 1.影响线上真实的用户访问,所以需要在业务低谷进行 2.数据写入需要想办法进行隔离 | 较低 | 电商系的全链路压测,基于真实的线上生产环境进行 |
不管哪种压测环境方案,在落地成本,满足需求程度上都有区别,接下来对几种压测环境结合在阿里的应用进行介绍。
既然是低配环境,压出来的数据似乎完全不能用作生产环境运行的参考,但实际上,这种环境下的压测,也是非常重要的一环。主要体现在项目研发阶段的价值上。
方案价值
存在的问题
构建低配环境,可以是普通的测试环境,跟线上完全隔离。但是要解决以下问题
如何解决
阿里内部有一套完整的系统用于支撑阿里内部每日成千上万的研发阶段的性能压测需求。
方案的挑战
存在的问题
容量规划不是直接在生产环境进行的,因为生产环境的最终容量配比,是参考自容量规划产出的数据。在生产环境进行的压测,是最后的验收阶段,在容量规划完成之后。
提供一套独立的的生产环境子集 - 隔离环境,用于容量规划要解决的问题:
解决方案
想详细了解,阿里容量规划的技术演进可参考 [这里](https://mp.weixin.qq.com/s/jNyadzGqk9_CYSygmlnLgQhttps://mp.weixin.qq.com/s/jNyadzGqk9_CYSygmlnLgQ)。](
现在隔离环境就是最新容量规划生态中的重要基础。隔离环境的支持,才能支撑常态化的容量规划运行,持续不断的改进。
当然这里面的涉及的技术细节还有很多:
面临的挑战
生产环境复制版面临的挑战非常多:
其中,如果要对生产环境进行完全的复制,将要面临以下挑战
存在的问题
对于传统时代的压测工程师来说,这样一系列的操作,就是新搭建一套 “影子系统” 了,看起来有点像不可能完成的任务。要完成上述任务,压测工程师面临巨大的挑战:
所以我们很少看到有公司进行这样的 “生产环境复制” 操作。小型公司可能没那么多人力实现,大中型公司,成本就更加难以接受了。但是现在云化趋势的潮流中,这种方案开始体现出优其越性了。
解决方案
我们先看一下阿里云的产品架构图
产品服务非常丰富,但是不太利于我们理解和复制线上环境用于压测这个主题。具体到某一个场景的系统在阿里云的落地:
图片出处:https://rensanning.iteye.com/blog/2303440
搭建一个云上应用的最小集应该需要用到:
如果要在阿里云上复制以上线上系统。
step1 购买跟线上集群同规模同配置的 ECS,部署应用;
step2 复制线上 RDS;
step3 SLB 配置新入口,指向复制环境;
step4 开始线上压测;
在阿里云进行生产环境复制有以下优势:
谈分布式性能压测,就离不开全链路压测技术。目前,也有不少互联网企业开始构建自己的全链路压测体系,我们将阿里的实践浓缩成一张全链路压测模型图。
更多实践,可以点击这里
进一步阿里云 PTS,点击这里。
本文作者:
襄玲 (花名):阿里巴巴技术专家,PTS 研发,近期主导整理和推动云时代性能压测的思想和标准,云计算性能测试国标项目组成员,内部稳定性保障系统之预热系统负责人。