jmeter(四十四)常用性能指标分析
概述
我们在用jmeter做性能测试的时候,有一些关键性的性能指标需要去分析。但是由于开源工具本身的局限性,这些指标在工具中的命名极易对我们造成混淆。所以我们需要对这些指标一一进行剖析。
指标分析
响应时间:
假设我们把响应时间分为如下几段:
用户通过客户端向服务端发出请求的时间为: T1
服务端接收到请求,处理该请求的时间为:T2
服务端返回数据给客户端时间为: T3
客户端接收到响应数据,处理数据呈现给用户时间为:T4
从系统视角来看:
系统的响应时间Ts= T1+T2+T3。该时间没有包括客户端对数据处理并呈现的时间T4
从用户视角来看:
用户眼中的的响应时间:Tu = T1+T2+T3+T4。用户通过客户端发出业务请求,到客户端展现相应的请求结果,这个过程的时间越短越好
从服务器视角来看:
服务器接收到客户端发送的请求,并给出响应,这个过程所消耗的时间为响应时间,即服务器仅关注T2
从不同的视角下,衡量响应时间的指标也各不相同。在实际测试过程中,要明确以什么视角验证被测对象的性能。
大多数情况下,我们用jmeter做性能测试的响应时间都以用户视角去看待。
吞吐量:
我们用单位时间内系统处理请求的数量来定义它。吞吐量直接体现了软件系统的业务处理能力
衡量方式如下几种:
请求数 / 单位时间
点击数 / 单位时间
字节数 / 单位时间
jmeter在聚合报告中把吞吐量命名为Throughput
这里要说两个概念,TPS和QPS
TPS:Transactions Per Second(每秒处理的事物数)。一个事务是指向服务器发送请求然后服务器做出反应的过程
QPS:每秒查询率。它是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准
那么我们对于一个页面做一次访问,就会形成一个TPS;但一次页面访问,可能产生多次对服务器的请求,服务器对这些请求,计为“QPS“。
如果访问一个页面会请求服务器3次,那么一次访问产生一个“T”,产生3个“Q”
我们可以用jmeter做一个实验,用一个线程组模拟一个用户去访问一下腾讯新闻首页。那么这一个事物就是一个TPS
观察聚合报告里面的Throughput=7.6/s
它表示这一个线程在一秒内向服务器发送了7.6次请求,此时的Throughput可以理解为QPS。也就是一个TPS产生了7.6个QPS
但是如果我们在这一个请求上挂一个事物控制器,如下所示
此时在聚合报告中,Throughput就不可以和QPS划等号了,而是等同于TPS,它表示我们的系统每秒钟能处理3.4个事物
再比如下图。从登录到退出中间的一系列流程如果都挂在事物控制器下,那么它们整体就可以算做一个事物。TPS就表示每秒钟这一整个流程的处理数量
例:1分钟内系统可以处理1000次考勤打卡事物,则吞吐量TPS=1000/60=16.7 (次/秒)
如下图,则表示系统每秒钟能处理7次请求
并发数(线程数):
广义
单位时间内同时发送给服务器的请求数,不限定具体业务类型,强调的是同时发送
狭义
是单位时间内同时发送给服务器的相同的业务请求数,需限定具体的业务类型,强调业务请求相同
服务端视角
并发数为单位时间内服务端接收到的请求数
客户端视角
客户端的某个具体业务行为包括多个请求,并发数可被理解为客户端单位时间内同时发送给服务器端的请求数
用户视角
客户端的业务请求一般为用户操作行为,并发数也可理解为并发用户数,又可称为虚拟用户数
未完待续。。。。。。
jmeter(四十四)常用性能指标分析的更多相关文章
- NeHe OpenGL教程 第四十四课:3D光晕
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 网站开发进阶(四十四)input type="submit" 和"button"的区别
网站开发进阶(四十四)input type="submit" 和"button"的区别 在一个页面上画一个按钮,有四种办法: 这就是一个按钮.如果你不写ja ...
- Gradle 1.12用户指南翻译——第四十四章. 分发插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- SQL注入之Sqli-labs系列第四十一关(基于堆叠注入的盲注)和四十二关四十三关四十四关四十五关
0x1普通测试方式 (1)输入and1=1和and1=2测试,返回错误,证明存在注入 (2)union select联合查询 (3)查询表名 (4)其他 payload: ,( ,( 0x2 堆叠注入 ...
- “全栈2019”Java第四十四章:继承
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 孤荷凌寒自学python第四十四天Python操作 数据库之准备工作
孤荷凌寒自学python第四十四天Python操作数据库之准备工作 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天非常激动地开始接触Python的数据库操作的学习了,数据库是系统化设计 ...
- Android项目实战(四十四):Zxing二维码切换横屏扫描
原文:Android项目实战(四十四):Zxing二维码切换横屏扫描 Demo链接 默认是竖屏扫描,但是当我们在清单文件中配置横屏显示的时候: <activity android:name=&q ...
- 第四十四个知识点:在ECC密码学方案中,描述一些基本的防御方法
第四十四个知识点:在ECC密码学方案中,描述一些基本的防御方法 原文地址:http://bristolcrypto.blogspot.com/2015/08/52-things-number-44-d ...
- 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s
总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8 ...
- Spark(四十四):使用Java调用spark-submit.sh(支持 --deploy-mode client和cluster两种方式)并获取applicationId
之前也介绍过使用yarn api来submit spark任务,通过提交接口返回applicationId的用法,具体参考<Spark2.3(四十):如何使用java通过yarn api调度sp ...
随机推荐
- JavaScript实现网页回到顶部效果
在浏览网页时,当我们浏览到网页底部,想要立刻回到网页顶部时,这时候一般网页会提供一个回到顶部的按钮来提升用户体验,以下代码实现了该功能 HTML代码: <p id="back-top& ...
- k8s维护常用命令
k8s维护 1. 不可调度 kubectl cordon k8s-node-1 kubectl uncordon k8s-node-1 #取消 2.驱逐已经运行的业务容器 kubectl drain ...
- centos7 上Docker安装与启动
1. docker centos 文档地址 https://docs.docker.com/install/linux/docker-ce/centos/ 2. 安装环境说明: docker社区版 ...
- unity 实现技能释放
要实现技能释放其实很简单,说白了就是在指定的位置Instantiate一个对应的例子特效.我走的弯路主要在寻找这个指定位置上. 对于指向性技能就不多说了,因为是有确切目标的(当然首先判断下技能能不能对 ...
- vip视频播放
插件 Tampermonkey https://greasyfork.org/zh-CN
- js switch case 判断的是绝对相对===,值和类型都要相等
js switch case 判断的是绝对相对===,值和类型都要相等
- sql 查询某个字段最长的记录
sql 查询文本字段中值的长度最长的记录 一.函数1.SQL ServerLEN() 函数返回文本字段中值的长度.SELECT LEN(column_name) FROM table_name;2. ...
- Linux指令(搜索查找类)
find指令 将从指定目录下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端. 基本语法: find [搜索范围] [选项] 选项说明: 选项 功能 -name<查询方式> 按照 ...
- 动态渲染左侧菜单栏 :menu tree 动态渲染
其中后端代码不包含权限控制,同时支持二级(无子菜单) 和 三级菜单(无子菜单). 1.layui前端代码:(其他前端框架实现方法通用,不过需要修改js中append对应标签元素即可) <div ...
- Java自动化环境搭建笔记(1)
Java自动化环境搭建笔记(1) 自动化测试 先搭建java接口测试的环境: 使用mvn命令构建项目 测试集通过testNG.xml组织并运行 测试数据解耦,通过Excel等文件提供 基础依赖 创建m ...