首页 > 其他分享 >聊聊性能基准测试和容量评估规划

聊聊性能基准测试和容量评估规划

时间:2024-09-29 15:12:38浏览次数:8  
标签:上线 容量 压测 性能 流量 聊聊 基准 评估

星球有同学问了一个关于性能测试的问题,我觉得蛮有意思的,遂分享给大家,顺带聊聊我的分析思路和实践经验。

问题背景是这样:一个1.0版本的新系统还未上线,需要对其进行性能测试(性能基准),该如何开展工作?其中流量模型如何评估?涉及到缓存的场景如何压测?压测场景的流量配比该如何配置?线上的容量评估规划又该如何进行?

 

1、流量模型

未上线的系统因为没有真实的用户业务数据,因此无法得到较为准确的流量模型。

但如果没有流量模型,则压测得到的系统性能指标又不具备太大的参考价值,因此流量模型还是需要进行评估的,如何评估呢?

首先看系统的上线计划,比如上线后是全量推送还是灰度。

如果是全量推送,则可以参考公司其他业务的总用户数量,按照已上线系统的流量变化趋势,得到一个粗略的数值。

然后按照该系统的业务类型以及产品方预估的业务高峰期,按照二八原则进一步得到峰值的QPS数值。最后则是按照该系统的业务链路和调用关系,得到流量模型。

如果是灰度,则按照灰度的策略优先评估出第一次灰度的流量。比如注册用户100W,先灰度10%,观察一周没问题后灰度到20%。

这种情况下流量模型的起始值按照10W来计算,然后按照业务调用关系逐次转化计算。

PS:关于流量模型具体的评估方式和案例,请看文末的推荐阅读。

 

2、缓存场景

压测涉及到缓存是很常见的场景,这个问题的解决方法也很简单。

通过小流量压测或批处理的方式,将需要缓存的数据预热到缓存中。这一步的性能表现不作为真实的性能结果记录,主要目的是该缓存的数据进入缓存,保证测试场景的真实性。

有同学担心如果先预热再压测,这样后期的性能测试结果会和系统上线后用户访问的表现差异加大,这点其实无需担心。

新系统上线前,本身就需要对基础数据和缓存数据进行铺底和预热,这也是快速提高系统性能以及用户体验的方法。

 

3、场景流量配比

先解释一下流量配比。举个例子:订单业务对应的业务应用是order-interface,和订单有关的功能模块都集成在该应用中,比如订单列表、订单详情、创建订单、订单支付。

从服务层级来说,请求从网关路由到order-interface服务的QPS是固定数值,但不同的功能模块(接口)在同一时间段内的QPS是不同的,且其性能表现也会有所差异。为了得到应用服务层级的性能表现,则势必要对其进行混合场景压测。

这里订单服务order-interface中不同功能模块对应的接口QPS比例,就是所谓的流量配比。

再聊聊这种场景下的流量配比策略,其实思路很简单:拿到兜底结果即可。

不同的流量配比下,系统的性能表现是不同的,可以按照不同的流量比例组合,多验证几组得到不同的性能结果。

因为系统还未上线,因此需要在上线时为系统留出一定的冗余空间。将上述方法得到的性能测试结果,其中最差的一组作为基准,只要该组性能测试数据满足预期即可。

等系统上线后,再根据实际的业务和技术监控数据,得到新的流量模型和流量配比,快速调整优化并压测验证。

 

4、容量评估规划

很多测试同学对容量评估规划的理解有一定误区,实际上容量评估和容量规划,是两件事。

在实际的性能测试场景中,容量评估规划的步骤是:容量评估-压测验证-线上监控-调整优化。其中最后一步,才是所谓的线上容量规划。

所谓容量评估,就是ABCD不同业务以及对应的应用和中间件(Redis/MQ)的大致数值。

通过线下性能测试环境进行单机或小集群性能验证,得到一个粗略的结果,用最差一组的性能结果作为上线基准。

再者新系统上线,也是通过资源冗余来做稳定性保障的。等系统上线后,用新得到的流量模型和流量配比,快速调整优化并压测验证,再进一步调整各业务应用的水位以及对应的资源配置。这样才算是完成了容量规划。

容量规划是一个持续性渐进的过程,而非一锤子买卖。

标签:上线,容量,压测,性能,流量,聊聊,基准,评估
From: https://www.cnblogs.com/imyalost/p/18440020

相关文章

  • REF3012, REF3020, REF3025, REF3030, REF3033, REF3040采用 SOT-23-3 封装的 REF30xx
    1特性•微型封装:SOT-23-3•低压降:1mV•大输出电流:25mA•高精度:0.2%•低IQ:42µA(典型值)•出色的额定温漂性能:–0°C至70°C范围内为50ppm/°C(最大值)––40°C至+125°C范围内为75ppm/°C(最大值)2应用•温度和压力发送器•便携式、电池供电类设备......
  • 简单聊聊线程跟进程
    简单聊聊线程跟进程在编程中,我们常常会遇到“线程”和“进程”这两个词。它们都是帮助我们同时执行多个任务的工具,但它们之间有一些重要的区别。让我们用简单的语言来聊聊这两个概念,同时提供一些代码示例,让你更容易理解。 什么是进程?进程可以看作是计算机上运行的一个独立......
  • 聊聊蓝牙配对技术-CTKD OVER BR/EDR
    背景最近一直在调试耳机的BLEAUDIO功能,一次测试中把CTKD(Cross-transportkeyderivation)宏开关给关了,发现手机完全不会去连接耳机的LEAUDIO服务,甚至BLE连接都不会建立。说明手机连接双模蓝牙耳机的机制是:先去配对BR/EDR,然后通过CTKD的方式去建立BLE连接。带着好奇心去一......
  • 服务器硬盘一般多大容量?最大有多大
    服务器硬盘的容量取决于多种因素,包括硬盘的类型(如HDD或SSD)、使用的存储技术、以及服务器的具体用途。以下是一些常见的服务器硬盘容量范围:常规服务器硬盘容量HDD(机械硬盘):常见的容量从1TB起步,一直到数TB不等。企业级服务器通常配备的HDD容量为2TB、4TB、6TB、8TB、10TB等。SSD(固态......
  • ADS12204具有集成 PGA 和基准的 低功耗24位 ADC 模数转换芯片
    1特点•低电流消耗:在占空比模式下低至120μA(类型)•宽电源范围:2.3V至5.5V•可编程增益:1V/V至128V/V•可编程数据率:最高2kSPS•高达20位的有效分辨率•使用单周期设定数字滤波器在20SPS下同时抑制50Hz和60Hz的噪声•两个差分或四个单端输入•双匹配可......
  • raid10是不是硬盘越多越好(raid10容量计算公式)
    RAID10(也称为RAID1+0)是一种将镜像(RAID1)和条带化(RAID0)结合使用的磁盘阵列配置。它提供了良好的性能和冗余性,但并不一定是硬盘越多越好。以下是关于RAID10的几个关键点:RAID10的特点:性能:由于同时使用镜像和条带化,RAID10提供了良好的读取和写入性能。冗余:允许一半的硬盘(每组镜像......
  • 大容量服务器主要的用途有哪些
    大容量服务器设计用于处理和存储大量数据,它们在多种行业和应用场景中扮演着关键角色。以下是这类服务器的一些主要用途:数据中心:大容量服务器是数据中心的核心组件,用于托管网站、应用程序和数据,为用户提供快速、可靠的服务。企业级存储:用于企业内部大量数据的存储和管理,包括文档、图......
  • Redis系列补充:聊聊布隆过滤器(go语言实践篇)
    ★Redis24篇集合1介绍布隆过滤器(BloomFilter)是Redis4.0版本之后提供的新功能,我们一般将它当做插件加载到RedisService服务器中,给Redis提供强大的滤重功能。它是一种概率性数据结构,可用于判断一个元素是否存在于一个集合中。相比较之Set集合的去重功能,布隆过滤器空......
  • 优化 Go 语言数据打包:性能基准测试与分析
    优化Go语言数据打包:性能基准测试与分析场景:在局域网内,需要将多个机器网卡上抓到的数据包同步到一个机器上。原有方案:tcpdump-w写入文件,然后定时调用rsync进行同步。改造方案:使用Go重写这个抓包逻辑及同步逻辑,直接将抓到的包通过网络发送至服务端,由服务端写入,这样就减少......
  • SOLIDWORKS 2024 基准轴
       ......