如何做好性能压测?压测环境设计和搭建的7个步骤你知道吗?

news2025/1/16 1:34:39

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

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

1.1 系统逻辑架构

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

三层逻辑结构图

  • 客户层:用户请求端。
  • web层:处理客户端所有的业务请求逻辑和服务端数据。
  • 数据库层:维护业务系统的数据。

更复杂的逻辑结构说明:

  • 逻辑架构中的任意一层,有可能是在独立的物理集群机器上,也有可能跨多个物理机器或者跟其他逻辑层共享同一个物理集群。
  • 逻辑架构间的箭头是数据流,不是物理网络连接。

1.2 物理架构

下图为物理架构图。

1.3 硬件、软件和网络

  • 软件:环境中涉及到哪里基础软件、中间件。
  • 硬件:实体机/虚拟机,单机配置(CPU、内存、硬盘大小),集群规模。
  • 网络:内网还是外网,网络带宽,是否有跨网段问题,是否隔离。

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

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

2.1 对比表格

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

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

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数据,直接是系统维度的数据,不用转换,这样也更减少了转换过程中的失真。
  • 边压边弹技术:在隔离环境压测中,何时弹新机器,弹多少机器,整个过程如何控制,这里面包含了一整套完整精密的算法。整个过程示意图如下。

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

5.1 挑战

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

  • 复制生产环境服务器的架构
  • 复制生产环境网络基础环境
  • 复制生产环境的所有应用分层
  • 网络带宽
  • 数据库以及所有的基础数据集
  • 负载均衡

......

5.2 问题

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

  • 沟通协调几乎所有的技术部门(开发、运维、网络、IT...);
  • 如果即用即销毁,那么劳民损财只用个一两次,成本太大;
  • 如果持续维护,那么维护成本显然同样不可忽略;

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

5.3 方案

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

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

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

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

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

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

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

  • 操作便捷。可视化界面,系统所需要的组建配置安装即可。插播一下,阿里云上的压测服务PTS将来有机会提供一键搭建和销毁性能环境的功能,彻底解放压测工程师。
  • 架构信息清晰。阿里云上有“架构感知”的功能,可以直观绘制除业务系统在阿里云上的整体架构,准确直观,压测工程师不用再花很长的时间梳理系统的架构,还面临可能不准确的问题;
  • 即用即毁,大大节约成本。复制一套线上环境,如果是足够复杂的系统,使用的组建多,流量大,成本问题肯定要考虑。传统时代搭建的成本本身就高,继续维护和再搭建的成本同样也高。但是云时代,就是点几个按钮搭建,点几个按钮销毁的过程,按使用量付费,验证完就释放,对于资源成本的浪费可控性很好。
  • 机器配比根据情况可自由调控:在阿里云上显然也可以快捷进行低配、同配生产环境子集复制,相对于非云化的系统同样有明显的优势。

6. 生产环境-老生常谈

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

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

7. 总结

  • 仿真的性能压测环境,是执行有效性能压测的前提。
  • 不同的压测环境都有不同的应用场景,企业应根据自身情况进行选择。
  • 规模中小的公司独立搭建一套隔离的压测环境成本高昂,可维护性差。
  • 云时代的性能压测,阿里云上的PTS给高效压测带来更大的可能性。

END今天的分享就到此结束了,点赞关注不迷路~

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

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

相关文章

5种社交媒体策略提升你的SEO

你希望你的网站在多大程度上在搜索结果中被更多的受众看到?如果你想增加你网站的曝光率和流量,社交媒体整合是提高你的SEO的一个好方法。为了帮助公司和网站所有者提高他们的搜索引擎优化 (SEO),这篇文章将介绍五种社交…

易点易动设备管理系统:提升企业设备保养效率的最佳选择

在现代企业中,设备的正常运行和保养对于业务的顺利进行至关重要。然而,传统的手动设备管理方式往往效率低下、容易出错,给企业带来不必要的成本和风险。为了解决这一问题,易点易动设备管理系统应运而生。本文将介绍易点易动设备管…

ansible的基本安装

目录 一、简介 1.ansible自动化运维人工运维时代 2.自动化运维时代 3.ansible介绍 4.ansible特点 二、ansible实践 1.环境 2.ansible管理安装 3.ansible被管理安装 4.管理方式 5.添加被管理机器的ip 6.ssh密码认证方式管理 三、配置免密登录 1.ansible自带的密码…

2021年12月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 舞台上有3个角色,小猫的程序如下图所示,另外两个角色没有程序。点击绿旗,下列选项正确的是? A:小猫随鼠标移动,可能会遮挡其他两个角色 B:小猫随鼠标移动,可能会被其他两个…

前缀和的动态维护——树状数组[C/C++]

文章目录 前言lowbitlowbit的定义lowbit的计算 树状数组的思想树状数组的操作单点修改 update前缀查询 query树状数组的建立 build 前言 树状数组巧妙了利用位运算和树形结构实现了允许单点修改的情况下,动态维护前缀和,并且实现单点修改和前缀和查询的效…

2021年09月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 执行下图所示程序,舞台上的角色? A:在1秒内滑行到随机位置 B:不断地重复滑行到随机位置 C:只有按下空格键的时候,才会滑行到随机位置 D:只有按下空格键以外键的时候,才会滑行…

【鸿蒙应用ArkTS开发系列】- 云开发入门实战一使用鸿蒙登录组件实现客户端登录

目录 概述使用云端一体化开发模板创建项目工程创建登录入口页面集成登录SDK组件依赖登录组件SDK使用登录组件SDK 开启“手机号码”和“邮箱地址”认证方式 概述 通过本次课程,我们将学习怎么使用云端一体化开发模板来创建云开发工程,以及如何使用鸿蒙登…

机器学习第12天:聚类

文章目录 机器学习专栏 无监督学习介绍 聚类 K-Means 使用方法 实例演示 代码解析 绘制决策边界 本章总结 机器学习专栏 机器学习_Nowl的博客-CSDN博客 无监督学习介绍 某位著名计算机科学家有句话:“如果智能是蛋糕,无监督学习将是蛋糕本体&a…

Deepmind开发音频模型Lyria 用于生成高品质音乐;创建亚马逊新产品评论摘要

🦉 AI新闻 🚀 Deepmind开发音频模型Lyria 用于生成高品质音乐 摘要:Deepmind推出名为Lyria的音频模型,可生成带有乐器和人声的高品质音乐。Lyria模型针对音乐生成的挑战,解决了音乐信息密度高、音乐序列中的连续性维…

智能驾驶产品开发中如何贯彻“正向开发”理念

摘要: 基于演绎法的正向开发理念,能够让智能驾驶产品在充分满足用户需求,保证产品质量的同时,确保开发目标合理且得到落实。 前段时间,微博CEO吐槽理想L9智能驾驶“行驶轨迹不居中”,在网上引发了热烈讨论…

Youtube运营如何打破0播放?你需要的技巧、策略与工具

对于有跨境意向的内容创作者或者品牌企业来说,YouTube是因其巨大的潜在受众群和商业价值成为最值得投入变现与营销计划的平台。 据统计,98% 的美国人每月访问 YouTube,近三分之二的人每天访问。但是,YouTube还远未达到过度饱和的…

Android APN 参数数据库设计和代码实现

Android U 网页代码:/ - OpenGrok cross reference for / (aospxref.com) 字段参数介绍 实体对象 ApnSetting ApnSetting.java - OpenGrok cross reference for /frameworks/base/telephony/java/android/telephony/data/ApnSetting.java (aospxref.com) An Acc…

你不知道的库:库的种类,作用和加载方式

你不知道的库:库的种类,作用和加载方式 📟作者主页:慢热的陕西人 🌴专栏链接:Linux 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客…

Linux 局域网传输工具LANDrop安装

Linux 局域网传输工具LANDrop安装 🥙下载🌭解压🥪运行 🥙下载 官网下载 或网盘 🌭解压 使用以下命令解压获得squashfs-root文件夹 ./LANDrop-latest-linux.AppImage --appimage-extract🥪运行 进入squ…

分布式锁3: zk实现分布式锁

一 zk 实现分布式锁 1.1 zk分布式操作命令 1.指令: ls / get /zookeeper create /aa "test" delete /aa set /aa "test1" 2..znode节点类型: 永久节点:create /pa…

028 - STM32学习笔记 - ADC结构体学习(二)

028 - STM32学习笔记 - 结构体学习(二) 上节对ADC基础知识进行了学习,这节在了解一下ADC相关的结构体。 一、ADC初始化结构体 在标准库函数中基本上对于外设都有一个初始化结构体xx_InitTypeDef(其中xx为外设名,例如…

从mysql源码编译出相应的库和可执行文件及搭建mysql服务端

目录 1. 问题的提出 2. 源码下载 3. 升级或安装某些前置软件 3.1. 升级CMake 3.2. 升级gcc、g 4. 安装依赖库 4.1. 安装OpenSSL 4.2. 安装Curses 4.3. 安装pkg-config 5. 编译、安装 6. 编译结果、配置 7. 编译错误处理 7.1. 错误1 7.2. 错误2 8. 搭建mysql数…

FindMy技术用于充电宝

充电宝是一种便捷的充电器,方便个人随身携带,能够自行储备电能,为主流电子设备提供充电服务。它广泛应用于没有外部电源供应的场所,例如旅行、户外活动或紧急情况下,为用户的手持设备提供持续的电力支持,确…

C语言--数组与指针--打印字符串的n种方式

一.知识背景 一维数组名的含义 arr一般表示数组的起始地址(除了两种例外) 1.在定义数组的同一个函数中(不是形参),求sizeof(arr),求整个数组的字节数 2.在定义数组的同一个函数中(不是形参),&arr1,加整个数组的大小 (经常考试) 3.除上面以外,arr都表…

第四代智能井盖传感器:智能井盖位移怎么进行监测

井盖是城市基础设施的一个重要组成部分,若井盖出现移位等现象,可能会对路过的车辆和行人造成潜在危险。特别是那些含有甲烷气体的井盖,一旦气体超过阈值且被意外踩踏,可能会导致气体的释放,这便会引发一系列安全事故&a…