08-01 Jmeter 核心原理与性能测试理论

Jmeter 中心原理

根据协议,模仿真实用户场景,并经过多线程模仿用户建议恳求。

  1. 根据协议:功能测验的对象是网络分布式架构的软件,而网络分布式架构的中心是网络协议
  2. 多线程:人的大脑是单线程的,电脑的 cpu 是多线程的。功能测验便是使用多 线程的技术模仿多用户去负载
  3. 模仿真实场景。用户的访问时刻,访问频率都不是固定的

功能测验理论

功能测验的

  • 根本目标:测验体系功能是否合格;经过一定的技术手法,模仿用户的并发恳求,去测验体系最大处理才能与安稳运转的才能,找到功能瓶颈,提高体系整体处理才能
  • 根本办法:基准、负载、压力……

中心原理

根据协议,经过多线程的办法模仿用户并发,在不同场景下施压服务器

  • 根据协议:包含http,https,tcp,udp,socket,websocket,根据协议建议恳求
  • 多线程:经过多线程的办法,模仿并发用户,施压服务器
  • 涉及场景:jmeter 办法,元件;规划用户使用体系的相关,思考时刻,集合点,对成果进行断言

应用领域

  • 才能验证:体系能否在固定条件下具有所声明的才能

乙方向甲方供给的项目中,声明晰体系可以支撑5000用户同时登录,且呼应时刻不超越3s;乙方需求经过功能测验得到测验成果,给予甲方验收陈述

  • 瓶颈发现:发现瓶颈与缺点,无可参照的功能目标与目标

经过一系列的功能测验手法,发现功能瓶颈与缺点

  • 功能调优:对体系功能的调优

针对发现的功能瓶颈做调优

  • TPS 瓶颈
  • 服务资源瓶颈
  • 呼应时刻瓶颈
  • SQL 瓶颈
  • 容量规划:体系能否支撑未来一段时刻内的用户添加

当前用户可能只支撑5000用户并发;
预计未来用户并发量能到达 50000 or 500000;
针对未来可能存在的事务量迸发,以预计的用户并发量为基数,做对应的功能测验,提前调整硬件设备

测验思路

  • 要测什么?

前端:web、APP;从用户视点考虑,更多重视页面加载时刻,与呼应时刻

服务端:

  1. 工具层面:重视错误率与吞吐量
  2. 服务器层面:CPU,内存,IO,JVM

数据库:包含慢SQL,死锁……

  • 怎样测?

需求–计划–计划–测验环境搭建–规划用例–数据预备–规划场景–脚本开发–数据监控–成果分析–功能调优–提交陈述

  • 测验成果经过的标准:

依照需求:测验成果契合预期

无标准需求的:例如测验一个页面的最大并发

功能目标

  • 前端功能目标

呼应时刻:用户视角最优先重视的目标

  • 258原则:
    • 2s以内,很满足
    • 5s,一般
    • 8s,无法承受
  • 前端相应时刻:
    • 前端资源加载渲染的时刻
    • 前后端交互的时刻
    • 前端将后端查询的数据,在页面呈现出来
  • 网络连接时刻:
    • connect time-连接时刻:恳求发出到服务端接收到,中心的网络时刻
    • latency-延迟:网络连接时刻+服务处理返回的时刻
  • 服务段处理时刻=latency – connect time

错误率

点击率(HPS):用户点击按钮,触发恳求

TPS:

  • 单接口事务:单位时刻完结的恳求数
  • 多接口事务:单位时刻完结的事务数

RPS:直接从服务端视点衡量压力值

  • 单位时刻建议的恳求数

TPS 衡量了服务端/体系的功能;RPS 衡量了压力

  • 服务端功能目标

CPU

内存

磁盘IO

JVM

中心件:Tomcat、redis、Nginx

测验视角

用户视角

  • 呼应时刻
  • 体系安稳

运维视角

  • 硬件设备是否需求更换
  • 资源使用率是否合格
    • 使用率超标
    • 使用率过低
  • 体系容量

开发视角

  • 代码是否需求优化
  • SQL 优化
  • 体系架构优化

功能测验工程师的视角

测验类型

基准测验:每一次版本迭代都需求做基准测验,意图是对比上一次的测验成果,给出调优的根据

负载测验:继续不断地添加压力;需求保证压力的继续性;找到体系的瓶颈点

  • 并发用户模型:继续不断地添加并发用户
  • RPS模型:继续不断地添加恳求数

压力测验:当资源处于一个饱和状态,继续运转服务,考察体系的安稳性;或许负载处于一个高峰

  • 安稳性测验:最大压力的80%,继续运转一段时刻
  • 破坏性测验:在最大压力的基础上,依然不断添加压力,意图是让体系溃散报错

失效恢复测验:体系异常之后,能否及时地恢复

容量测验:考察体系在未来时刻段内,能支撑的用户数;测验大容量下,体系需求的硬件设备