性能工程

通过分析业务逻辑和技术架构,创建性能模型,制定性能方案,准备应用环境,设计并实施性能部署监控,实现符合真实业务逻辑的压力,通过监控手段获取性能数据,分析性能数据,查找出性能瓶颈的根本原因并优化,最后通过环比生产环境的性能数据修正场景

性能指标

RT与吞吐量是正相关的,RT越短、吞吐量越高

基准场景下的性能需求指标:

业务名称TPSTPS方差响应时间响应时间方差90%95%99%成功率
业务15005%100ms5%150ms300ms500ms100%

对于性能来说,当平均值是一个比较优秀的值时,有可能会出现非常抖动的情况,标准方差是为了描述一条曲线的上下浮动范围有多大,而响应时间百分比是为了描述一条曲线的上下浮动范围有多大

容量场景下的性能需求指标:最重要的就是业务比例

业务名称比例TPSTPS方差响应时间响应时间方差90%95%99%成功率
业务150%5005%100ms5%150ms300ms500ms100%

稳定性场景下的性能需求指标:要合理判断稳定性场景需要运行多长时间,同时也要合理判断稳定性场景应该用多大的压力执行

异常场景下的性能需求指标:针对系统的架构,先分析异常场景中的需求点,再设计相应的案例来覆盖

性能方案

mindmap  性能项目实施方案    背景      项目背景      性能目标    测试范围      需要测试的特性      不需要测试的特性    准则      启动准则      结束准则      暂停/再启动准则    业务模型和性能指标      业务模型/测试模型      业务指标/性能指标    系统架构图      系统技术栈      系统逻辑架构图      系统部署架构图    性能实施前提条件      硬件环境      工具准备        测试工具        监控工具      数据准备        基础数据    性能设计      场景执行策略      业务场景        基准场景        容量场景        稳定性场景        异常场景      监控设计        全局监控        定向监控    项目组织架构      成果输出        过程性输出        结果输出          性能项目测试报告          性能调优报告    项目风险分析

业务模型

抽取真实业务模型:

  1. 抽取生产日志
  2. 梳理业务流程
stateDiagram-v2  统计生产业务量 --> 统计业务场景峰值TPS  统计业务场景峰值TPS --> 得到各接口请求比例  得到各接口请求比例 --> 梳理业务流程  梳理业务流程 --> 在测试中实现业务比例

定律与数理基础

点估计指标

分布模型

排队论

stateDiagram-v2  state 随机服务系统 {    队列 --> 服务机构: 服务规则  }  顾客 --> 队列: 顾客到达(输入)  服务机构 --> [*]: 离开系统(输出)

测试数据准备

系统铺底数据:系统底库数据

参数化数据:发起测试请求的数据

性能数据分析

目的:正不正常、趋势预测、问题排查

分析需要注意的:

  1. 数据分析可以证实数据的相关性,但是还需要其他知识才能更准确地判断谁是因、谁是果
  2. 数据的大小与趋势解读与业务强相关
  3. 垃圾数据进垃圾数据出
  4. 理解各个性能指标的关系

性能数据展示

难点:数据量大、数据复杂、背后问题复杂、牵扯模块多

在展示时,以不同视图体现不同重点,给足上下文信息

  1. 表格:理解各个性能指标的关系
  2. 线图:显示一段时间内这个变量的变化或趋势
  3. PDF图、CDF图:一个变量的概率数据,较为特殊的线图
  4. 面积图
  5. 柱状图:用于比较不同类别的数量
  6. 散点图:用于展示数据的分布情况
  7. 饼图:需要显示比例数据或者百分比时
  8. 树形图:对于显示类别和子类别之间的层次结构和比较值非常有用
  9. 热力图:使用颜色反映数据的重要情况

PDF、CDF

性能分析

stateDiagram-v2  剖析 --> 猜测  猜测 --> 剖析  剖析 --> 解决

202282101324

方法论

  1. 从压力场景中获取 TPS 和响应时间曲线
  2. 分析架构,看压力流量的路径
  3. 分析各个链路节点,拆分响应时间,分析主要瓶颈
  4. 全局监控所需要的性能数据
  5. 定向监控分析:通过全局监控判断分析,知道哪个方向上有问题后,再去做定向的监控,辅助全局数据,得到性能问题的证据链
  6. 根据证据链判断性能瓶颈点
  7. 根据具体问题确定解决方案