如何做好性能压测丨压测环境设计和搭建

简介:一般来说,保证执行性能压测的环境和生产环境高度一致是执行一次有效性能压测的首要原则。有时候,即便是压测环境和生产环境有很细微的差别,都有可能导致整个压测活动评测出来的结果不准确。

一般来说,保证执行性能压测的环境和生产环境高度一致是执行一次有效性能压测的首要原则。有时候,即便是压测环境和生产环境有很细微的差别,都有可能导致整个压测活动评测出来的结果不准确。

1. 性能环境要考虑的要素

1.1 系统逻辑架构

系统逻辑架构,即组成系统的组建,应用之间的结构,交互关系的抽象。最简单最基本的就是三层架构。

 

1.png

三层逻辑结构图

  • 客户层:用户请求端。

  • web层:处理客户端所有的业务请求逻辑和服务端数据。

  • 数据库层:维护业务系统的数据。

2.png

更复杂的逻辑结构说明:

  • 逻辑架构中的任意一层,有可能是在独立的物理集群机器上,也有可能跨多个物理机器或者跟其他逻辑层共享同一个物理集群。

  • 逻辑架构间的箭头是数据流,不是物理网络连接。

1.2 物理架构

下图为物理架构图。

3.png

1.3 硬件、软件和网络

  • 软件:环境中涉及到哪里基础软件、中间件。

  • 硬件:实体机/虚拟机,单机配置(CPU、内存、硬盘大小),集群规模。

  • 网络:内网还是外网,网络带宽,是否有跨网段问题,是否隔离。

软件中对系统使用到的中间件有一个了解,不仅可以帮助设计更仿真的压测环境,也有助于在压测过程中,加快瓶颈,问题的定位和解决。

2. 不同性能压测环境优缺点对比

2.1 对比表格

 

9.png

不管哪种压测环境方案,在落地成本,满足需求程度上都有区别,接下来对几种压测环境结合在阿里的应用进行介绍。

3. 低配生产环境子集-研发阶段性能瓶颈发现

既然是低配环境,压出来的数据似乎完全不能用作生产环境运行的参考,但实际上,这种环境下的压测,也是非常重要的一环。主要体现在项目研发阶段的价值上。

3.1 价值

  • 新应用上线前,应用代码本身的瓶颈发现。代码本身的性能问题,例如连接未释放,线程数过多,通过低配的环境,一定时长的压测完全可以提前发现很多。

  • 应用维度基线数据。跑出来的数据不能给线上做参考,但是如果每次迭代,发布前,都在同一套低配环境运行性能压测,跟低配基线数据进行对比,也能起到衡量系统迭代的时候,性能是否有提升或者下降的参考。

  • 帮助研发进行快速的性能调优。系统越复杂的时候,发生性能问题后定位的难度会指数增加。进行过性能调优的研发都有体会,有时候调优,就是改一个配置,然后重新部署,跑压测,看结果是不是改善了,直到找到最佳的配置。这个过程如果不能轻量起来,对于研发调优就是噩梦。

3.2 问题

构建低配环境,可以是普通的测试环境,跟线上完全隔离。但是要解决以下问题:

  • 压测会影响测试环境的功能测试。这一点很容易理解。压力大了,可能影响同一套测试环境的功能测试结果,所以性能压测环境最好独立。

  • 依赖的基础应用在性能测试中没有。例如要压测的目标业务是发贴,肯定会依赖到用户相关的业务,用户中心就是一个基础应用(当然很多小型公司可能没独立这块业务)。

  • 研发阶段无法快速部署要压的分支。有一点规模的互联网公司,一周的迭代,同一个应用可能会有多个分支,需要支持快速部署指定的分支到性能环境。

3.3 方案

阿里内部有一套完整的系统用于支撑阿里内部每日成千上万的研发阶段的性能压测需求。

4. 同配生产环境子集-容量规划

4.1 挑战

  • 容量规划是一个持续的过程,如何减少人力投入,如何才能“无人值守”。

  • 成本和效果平衡:尽量贴近线上运行环境,同时容量规划的数据对线上容量布置有很好的指导作用。

  • 完全独立不影响线上。

  • 随时可运行,结果可跟踪。

4.2 问题

容量规划不是直接在生产环境进行的,因为生产环境的最终容量配比,是参考自容量规划产出的数据。在生产环境进行的压测,是最后的验收阶段,在容量规划完成之后。
提供一套独立的的生产环境子集-隔离环境,用于容量规划要解决的问题:

  • 构建的环境集如何定义,规模和架构如何贴近线上。

  • 流量如何走到隔离环境。

  • 隔离环境写的数据是否需要清理,如何清理?

4.3 方案

阿里容量规划的技术演进,可参考文后资料了解详情[1]
现在隔离环境就是最新容量规划生态中的重要基础。隔离环境的支持,才能支撑常态化的容量规划运行,持续不断的改进。

  • 首先,提炼机器比例。基于线上核心应用的现有规模情况,提炼出一个缩小版的完全模型。即线上机器之间的比可能是5000:2000:1000,整体比例缩放100倍,在隔离环境的机器比是50:20:10。使用这种方式,有效的保证了同线上机器同比例,同时成本上做了很好的控制。

  • 其次,确定隔离目标流量。根据接下来线上的目标流量大小,同比例计算出隔离环境应该支撑的流量,作为隔离环境打压测流量时的目标流量。

  • 然后,通过压测流量从小到目标流量探索,边压边弹。

  • 最后,收集隔离环境达到目标流量后,新的机器比例及数据。应用间的比例关系很可能已经有了改变,有的应用可能缩容,有的应用可能扩容,作为线上机器关系的参考。

当然这里面的涉及的技术细节还有很多:

  • 全链路压测新应用:整个压测流量其实是沿用了线上压测的全链路压测机制,带流量标,数据落影子库的方式, 所以隔离环境写的数据不需要特殊的处理。

  • 环境标隔离环境:流量同时会带上一个“环境标”,通过环境标的识别,接入层会把流量导到隔离环境,从而做到流量的环境隔离。

  • PTS首创"RPS"模式施压:在系统整体的流量数据获取上,我们摒弃了一直依赖备受追捧的"并发量"的方式。众所周知,业务提出来的目标一般会是,"希望峰值支持xxxx个用户登陆"这种,进行容量规划的时候需要将并发的用户数跟系统能承受的QPS,进行一个映射关系。我们容量规划就直接使用阿里云压测平台(PTS)的"RPS"模式,压出来拿到的QPS数据,直接是系统维度的数据,不用转换,这样也更减少了转换过程中的失真。

  • 边压边弹技术:在隔离环境压测中,何时弹新机器,弹多少机器,整个过程如何控制,这里面包含了一整套完整精密的算法。整个过程示意图如下。

 

4.png

5. 生产环境复制版-云时代的优势

5.1 挑战

生产环境复制版面临的挑战非常多:
其中,如果要对生产环境进行完全的复制,将要面临以下挑战:

  • 复制生产环境服务器的架构

  • 复制生产环境网络基础环境

  • 复制生产环境的所有应用分层

  • 网络带宽

  • 数据库以及所有的基础数据集

  • 负载均衡

......

5.2 问题

对于传统时代的压测工程师来说,这样一系列的操作,就是新搭建一套“影子系统”了,看起来有点像不可能完成的任务。要完成上述任务,压测工程师面临巨大的挑战:

  • 沟通协调几乎所有的技术部门(开发、运维、网络、IT...);

  • 如果即用即销毁,那么劳民损财只用个一两次,成本太大;

  • 如果持续维护,那么维护成本显然同样不可忽略;

所以我们很少看到有公司进行这样的“生产环境复制”操作。小型公司可能没那么多人力实现,大中型公司,成本就更加难以接受了。但是现在云化趋势的潮流中,这种方案开始体现出优其越性了。

5.3 方案

我们先看一下阿里云的产品架构图。

 

5.png

产品服务非常丰富,但是不太利于我们理解和复制线上环境用于压测这个主题。具体到某一个场景的系统在阿里云的落地:

 

6.png

网友的云产品架构总结,可参考文后资料了解详情[2]

搭建一个云上应用的最小集应该需要用到:

  1. SLB-用来负载均衡;
  2. ECS-用来部署业务应用;
  3. RDS-用来存储业务数据;

如果要在阿里云上复制以上线上系统。
step1 购买跟线上集群同规模同配置的ECS,部署应用;
step2 复制线上RDS;
step3 SLB配置新入口,指向复制环境;
step4 开始线上压测;

在阿里云进行生产环境复制有以下优势:

  • 操作便捷。可视化界面,系统所需要的组建配置安装即可。插播一下,阿里云上的压测服务PTS将来有机会提供一键搭建和销毁性能环境的功能,彻底解放压测工程师。

  • 架构信息清晰。阿里云上有“架构感知”的功能,可以直观绘制除业务系统在阿里云上的整体架构,准确直观,压测工程师不用再花很长的时间梳理系统的架构,还面临可能不准确的问题;

  • 即用即毁,大大节约成本。复制一套线上环境,如果是足够复杂的系统,使用的组建多,流量大,成本问题肯定要考虑。传统时代搭建的成本本身就高,继续维护和再搭建的成本同样也高。但是云时代,就是点几个按钮搭建,点几个按钮销毁的过程,按使用量付费,验证完就释放,对于资源成本的浪费可控性很好。

  • 机器配比根据情况可自由调控:在阿里云上显然也可以快捷进行低配、同配生产环境子集复制,相对于非云化的系统同样有明显的优势。

6. 生产环境-老生常谈

阿里的全链路压测技术已经是很成熟,并且得到很广泛的推广的线上压测技术。互联网大大小小的公司均有落地,在此只概括为一个模型图,想知道更多细节内容的,读者可以网上收集以下,有大量的文章详细阐述了各自落地实施的过程。
以下是阿里经典的全链路压测模型图。

 

7.png

经过多年的发展,由全链路压测系统演进出可对阿里以外的企业提供跨行业的通用的性能压测服务的系统PTS。目前PTS也提供流量隔离解决方案给外部企业使用。

 

8.png

7. 总结

  • 仿真的性能压测环境,是执行有效性能压测的前提。

  • 不同的压测环境都有不同的应用场景,企业应根据自身情况进行选择。

  • 规模中小的公司独立搭建一套隔离的压测环境成本高昂,可维护性差。

  • 云时代的性能压测,阿里云上的PTS给高效压测带来更大的可能性。

作者:SRE团队技术小编-小凌

原文链接 

本文为阿里云原创内容,未经允许不得转载

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

疫情之下的科技普惠:阿里云科技驱动中小企业数字化

2020 年到2021年,一场疫情给全球经济发展带来了重创。在受到疫情影响之时,各行各业尽展众相,一些企业进行着自我变革;一些企业还未来得及自救,却已被淘汰。更受疫情冲击的,是各行各业中的中小型企业&#x…

一则有趣的机场广告

作者:小枣君来源:鲜枣课堂前几天路过深圳宝安机场时,有一个大屏广告,成功地吸引了我的注意。我把它拍了下来,如图所示。广告中,一位商务人士从胸前口袋里,掏出了一个银灰色的小盒子。广告语写着…

3+1保障:高可用系统稳定性是如何炼成的?

简介: 影响系统稳定性的架构设计有哪些?一个可持续保障的研发运维流程机制是怎样的?如何培养团队技术人员的意识和能力?本文作者以团队技术负责人的视角,从三大技术要素和一个业务要素,分享在稳定性建设上的…

从KPI到OKR,高阶产品人如何推动业务高速增长

简介: 不管是核心大目标,还是O(Objectives),或者北极星指标,奇妙等式等等,最后都需要核心组织协同方式来推动整个目标聚焦以及过程的落地。 作为产品经理人,相信很多人都遇到过以下的…

有没有五金产品展开计算机软件,花样算法猫腻不断 全屋定制这本账真心不好算...

花样算法猫腻不断 全屋定制这本账真心不好算人民网2017-03-14 09:50[摘要]选材差不多、尺寸也差不多,在不同定制品牌之间,不要说终的产品价格相差多少,就光中间的计价过程估计就能让人头疼好一阵子了。说到定制家具产品的账要怎么算。有过消费…

从Hadoop到云原生,谈如何消除程序员35岁危机

作者:小智 来源:智领云科技前言35岁这个“职场枯荣线”,确实真实存在。不知从何时起,很多企业将入职门槛限定在35岁以下,“35岁”已然成为职场中年的魔咒。尤其是程序员这个群体,年龄绝对是最难以隐忍的痛点…

Serverless Kubernetes:理想,现实与未来

简介: 当前 Serverless 容器的行业趋势如何?有哪些应用价值?如果 Kubernetes 天生长在云上,它的架构应该如何设计?Serverless 容器需要哪些基础设施?阿里云容器服务产品负责人易立及阿里云 Serverless Kube…

这只猫在云端定居了?边缘计算在天猫精灵云应用上的落地实践

IoT的概念早已飞入寻常百姓家,在你我的日常生活中发挥着“智能”作用。比如,智能家居、智慧照明、GPS 导航、手机计步器等。未来,随着用户和技术的延伸和拓展,物联网的信息交换和通信价值将会被继续放大。 那么问题来了&#xff…

Gartner发布2021年新兴技术成熟度曲线,三大新兴技术趋势主题

Gartner通过信任、增长和变革三大新兴技术趋势主题发布推动创新的关键新兴技术。需特别关注非同质化通证、量子机器学习、生成式人工智能、同态加密以及组装式应用和网络等关键技术 编辑 | 宋慧 供稿 | Gartner 头图 | 付费下载于视觉中国 根据全球领先的信息技术研究和顾问公…

如何通过数据智能玩转私域流量新生态

简介: 流量三分天下的局面,催生了私域流量的诞生。从第三方数据流量监测角度观察,2020年,以及在未来几年内,在私域流量方面会出现什么样的趋势和新机会?友盟统计分析产品总监冯成蹊,就“如何通过…

深圳入户计算机一级证加分吗,2021年深圳积分入户,哪些职称证书可以加分?...

深圳入户问题记录今年已经拿到自考本科,社保刚交一年,听说职称证书可以加分,明年打算考,请问哪些证书可以加分,容易考吗?在深圳积分入户分值项中,职称也是可以加分的。职称(Professional Title)…

Unet网络实现叶子病虫害图像分割

作者|李秋键 出品|AI科技大本营(ID:rgznai100) 智能化农业作为人工智能应用的重要领域,对较高的图像处理能力要求较高,其中图像分割作为图像处理方法在其中起着重要作用。图像分割是图像分析的关键步骤,在复杂的自然背景下进行图像分割, 难度…

阿里毕玄:提升代码能力的4段经历

简介: 对于程序员而言,我始终认为代码是展现能力的关键。一个优秀程序员写的代码,和一个普通程序员写的代码是很容易看出差别的,代码是展示程序员硬实力的名片。如何提升写代码的能力,始终是一个关键的话题&#xff0c…

c语言 cstring “+”: 运算符不起任何作用;应输入带副作用的运算符_国家计算机二级考试C语言选择题高频考点汇总,干货满满...

【考点1】C语言的构成1.源程序由函数构成,每个函数完成相对独立的功能。2.每个源程序中必须有且只能有一个主函数,可以放在任何位置,但程序总是从主函数开始执行。3.函数体:在函数后面用一对花括号括起来的部分。4.每个语句以分号…

钉钉推出“钉工牌”,门禁、差旅、员工福利一码通用

钉工牌将工作身份验证与支付功能相整合,不同于传统物理工牌,它是一张数字时代的“活”工牌。 编辑 | 宋慧 出品 | CSDN云计算 8月24日,钉钉向1700万企业组织正式推出“钉工牌”。企业开通此项功能后,员工可以用手机里的数字工牌刷…

快速了解云原生架构

简介: 云原生架构本质上也是一种软件架构,最大的特点是在云环境下运行,也算是微服务的一种延伸。 起源 1. 云原生(Cloud Native)的由来 云原生的概念最早开始于 2010 年,在当时 Paul Fremantle 的一篇博…

class传参 python_Python 初学者必备的常用内置函数

本文纲要Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间。目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很常见,这里主要介绍一…

线上流量越发昂贵,如何通过裂变营销实现业务增长?

简介: 公域流量流量越来越聚集于头部的媒体同时投放的费用越来越高。如:在游戏电商或金融行业,在广告投放拉新方面成本达到了100元左右。除了头部媒体的流量以外,在中长尾的流量上,这部分虽然成本低,但转化…

钉钉总裁不穷首谈产品观:To B产品用户不只是CEO

编辑 | 宋慧 出品 | CSDN云计算 头图 | 钉工牌发布现场图 8月24日,钉钉正式对外发布首个数字工牌产品“钉工牌”,这是行业内首个整合了工作身份验证与支付功能的数字工牌产品。以钉工牌为产品思考的原点,阿里巴巴集团副总裁、钉钉总裁叶军&a…

Serverless在游戏运营行业进行数据采集分析的最佳实践

简介: 这个架构不光适用于游戏运营行业,其实任何大数据采集传输的场景都是适用的,目前也已经有很多客户正在基于Serverless的架构跑在生产环境,或者正走在改造Serverless 架构的路上。 众所周知,游戏行业在当今的互联网…