首页 > 其他分享 >性能基础体系

性能基础体系

时间:2023-01-29 16:46:15浏览次数:34  
标签:体系 RT 场景 性能 基础 业务 测试 模型

知识体系

 

 

基础指标

简单来说,性能测试实际上主要关注如下三点:

  1. 速度:TPS、RT ;
  2. 容量:吞吐量、PV、Hit;
  3. 资源:CPU、Memory、DiskIO、Network、文件句柄数;

性能分层

性能测试领域,要在评估调研阶段就考虑性能分层的影响。在性能分析和优化阶段,也要考虑不同层级对整体性能的影响。我将它们分为如下六层:

  1. 网络层:主要指带宽、网段、防火墙等设施,当然,CND之类的资源,也可以划分在这一领域;
  2. 网关层:网关是请求入口和业务接入层,一般登录验签调用、加解密鉴权、限流等操作,都是在网关进行;
  3. 应用层:无论是前端的渲染展示还是后端的逻辑处理,都可以理解为应用层;
  4. 中间件:中间件包含缓存、MQ、JOB、DTS/DRC/DAL、配置中心等一系列组件;
  5. 存储层:一般指数据存储和文件存储层级,典型的组件有MySQL、HDFS;
  6. 物理层: 无论是云服务还是自建机房,物理硬件层面都可以归纳到这一层;

需求调研

  1. 项目背景:版本迭代&独立项目&新建服务&系统重构&性能优化;
  2. 测试目的:超卖&高并发&扩容性&配置验证&资源耗用;
  1. 系统架构
    • 技术架构:服务间的依赖关系,包含缓存,MQ等信息;
    • 网络拓扑:请求-域名-SLB/HA/Nginx-web-app-DB以及外部依赖;
  1. 场景模型
    • 业务场景:业务场景的多样性和特殊性以及对脚本开发联调&数据预埋的影响;
    • 业务模型:只读、读写、批处理、定时Job;
    • 业务配比:被测场景占总体场景的业务量占比(公式:被测场景/总业务量*100%)
      • 选取业务峰值的数据,单独统计;
      • 如果各业务占比类似,则按照比例转化;
      • 如果比例差距大,则按照区间单独统计分析;
  2. 环境配置:PRE&PERF、app&Redis&MQ&DB&网络&网段&&带宽&防火墙,是否独享资源隔离等;
  1. 性能指标
    • 业务指标:DAU、GMV、注册用户数、在线用户数、活跃用户数、增长趋势等;
    • 系统指标:协议类型、长短链接、同步策略、加解密、JVM内存分配、容器线程数&连接数&Timeout、MQ-Cousumer数量;
    • 压测指标:QPS、TPS、ART、99%RT、Success%;
  1. 数据类型
    • 数据铺底量;
    • 是否有敏感数据需脱敏;
    • 限制条件(时间&次数&权限);
    • 自增、唯一、UUID、加解密、幂等;
  2. 关键时间:提测时间、验收时间、上线时间;

模型场景

  1. 业务模型:业务场景、流量转化漏斗;
  2. 测试模型:关注核心场景,过滤无关及非核心业务;
  3. 场景模型:从系统架构设计层面出发,关注不同层面,提升性能!
    • 基准:单机单服务单接口;
    • 并发:设定阈值,观察水位;
    • 容量:阶梯式加压、性能拐点、资源瓶颈;
    • 异常:容错处理、监控告警、容灾恢复演练;
    • 稳定性:长期稳定正确提供服务的能力,可用性SLA;

测试方案

  1. 项目背景:说明项目开展的背景及目的;
  2. 测试方案:针对项目涉及的场景,测试实施的大体方案;
  3. 实施准则:任何项目,都要有准入准出和暂停中止准则;
  4. 性能模型:针对具体的场景,设计的性能模型最好经过评估验证;
  5. 测试策略:针对测试模型所采用的不同的测试策略,同步的测试策略要达成什么样的目的;
  6. 性能指标:业务指标是多少?转化的技术指标是多少?冗余范围有多大?
  7. 准备工作:其中包含环境、数据、脚本、监控等准备事项;
  8. 组织结构:整个项目中涉及哪些事项?不同事项的负责人是谁?交付时间是什么时候?

结果评估

在性能测试实施过程中,准确定义和描述性能测试结果,及针对不同结果进行模型分析,是很重要的一项能力。

  1. 性能实施方法论
    • 基于指标构建;
    • 建模是分析的过程和结果;
    • 基于真实环境的系统模拟;
    • 压测实施过程是整体的核心;
    • 需要设定统一的目标、流程、分析方法、组织结构;
  1. 正确描述性能结果和过程的术语
    • 瓶颈描述:什么场景执行了什么策略/操作,因为什么原因导致了什么结果
    • 解决方案:优化了哪里?验证的方式及结果?是否满足预期&是否解决了发现的问题?
  1. 性能分析层级
    • 业务分级:业务-场景-数据-架构-参数;
    • 技术分级:引擎-网络-应用-中间件-数据库;
      • 工具:关注指标,从结果反推过程;
      • 配置:线程、连接数、Timeout、长短链接、同步异步、路由转发;
      • 应用:日志、硬件配置、资源使用率;
      • 中间件:Job、缓存命中、消息堆积、Consumer配置;
      • 数据库:资源耗用、库表结构、表锁行锁、活跃连接数、最大连接数;
  1. 性能拐点
    • TPS增长放缓,RT快速上升;
  1. 性能交叉点
    • 模型上的TPS和RT交叉节点;
  1. 性能平衡点
    • 重点关注业务可接受的最大RT;
  1. 性能衰减点
    • timeout参数&TPS急剧恶化抖降&RT快速飙升;

脚本设计

  1. 什么时候需要做脚本关联?
    • 服务端结果动态返回,非幂等;
    • response body的参数需要向下透传;
  1. 如何理解并发和事务的区别?
    • 并发指的是同一时刻服务端接收到的请求数,而非压测引擎的并发线程/RPS;
  1. thinktime怎么用?
    • 它有什么效果?
    • 是否存在真实的业务场景?
    • 是否影响整体的压测场景和服务资源?
  1. 主要关注哪些指标?
    • 并发数、TPS、ART、99%RT、CPU%、Memory%、systemLoad%;

典型特例

  1. 文件存储优化
    • 原理:文件/图片存储在源节点,利用CDN缓存各种变更和路径。CDN未命中,回源节点处理并返回,同时同步最新的变更和路径到CDN。
    • 优点:节省存储成本,提高查询展示渲染性能,灵活满足业务。
    • 注意事项:大文件分块存储,避免局部过热导致单机磁盘IO过载,分块有助于整体系统资源调度。
  1. 秒杀超卖场景

  适用场景:秒杀、限时抢购、限量抢购等。

    • 单用户单端多次抢购;
    • 单用户单端限量抢购;
    • 单用户多端抢购→低并发;
    • 单用户多端抢购→高并发

 

标签:体系,RT,场景,性能,基础,业务,测试,模型
From: https://www.cnblogs.com/testcodell/p/17073104.html

相关文章

  • 组件基础
    组件基础组件使用在components中注册,也可以全局注册一个组件每次使用组件,都重新创建了实例,变量值是不同的推荐标签名:大驼峰propsprops是一种特别的属性,子组件使用......
  • 干货|常用的电子元器件基础知识介绍
    电子元器件是电子行业的入门,但是有很多工程师对其还是一知半解,下面沐渥小编为大家介绍一下沐渥科技常用的电子元器件及其基础知识。1、电阻:电阻是电路中使用最多的元器件,因......
  • Request_原理与Request_继承体系
    Request_原理 1.Request对象和Response对象的原理1.Request和Response对象是由服务器创建的。我们来使用它们2.Request对象来获取......
  • k8s client-go 02基础clientset操作k8s
    Clientset构造clientset操作k8s集群。packagemainimport("context""fmt"v1"k8s.io/apimachinery/pkg/apis/meta/v1""k8s.io/client-go/ku......
  • Git基础
    Git基础一、获取仓库通常获取仓库有两种方式:1)将尚未进行版本控制的本地目录转换为Git仓库。执行初始化命令:gitinit2)从其他服务器克隆一个已经存在的Git仓库。执行克......
  • CLR垃圾回收和性能
    垃圾回收的基本知识项目2023/01/2824个参与者反馈在公共语言运行时(CLR)中,垃圾回收器(GC)用作自动内存管理器。垃圾回收器管理应用程序的内存分配和......
  • Elasticsearch的性能优化
     Elasticsearch的默认配置项是比较全面的,在不做太多配置的情况下可以使用es的全文检索,高亮显示,聚合,和数据的索引。但是在比较了解es的情况下,可以对很对配置进行优化。一、......
  • 2023牛客寒假算法基础集训营2
    《重点考察容斥原理的题目》  《L.TokitsukazeandThreeIntegers》  可以看的出:n很小,首先考虑暴力的方法:我们可以用两层for循环,将(ai*aj)%p......
  • python 实现app性能测试(cpu、内存占用情况)
    一、获取appcpu占用情况1、实现代码importos,csvimporttimeimportnumpyasnpfrommatplotlibimportpyplotaspltfromcheck_packageimportcheck_package......
  • MySQL基础:通过SQL对数据库进行CRUD
    MySQL基础今日目标:能通过SQL对数据库进行CRUD文章目录MySQL基础一、MySQL数据模型二、SQL概述2.1SQL简介2.2通用语法2.3SQL分类三、DDL:操作数据库3.1查询3.2创建数据......