概述

我们在用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(四十四)常用性能指标分析的更多相关文章

  1. NeHe OpenGL教程 第四十四课:3D光晕

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. 网站开发进阶(四十四)input type="submit" 和"button"的区别

    网站开发进阶(四十四)input type="submit" 和"button"的区别   在一个页面上画一个按钮,有四种办法: 这就是一个按钮.如果你不写ja ...

  3. Gradle 1.12用户指南翻译——第四十四章. 分发插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  4. SQL注入之Sqli-labs系列第四十一关(基于堆叠注入的盲注)和四十二关四十三关四十四关四十五关

    0x1普通测试方式 (1)输入and1=1和and1=2测试,返回错误,证明存在注入 (2)union select联合查询 (3)查询表名 (4)其他 payload: ,( ,( 0x2 堆叠注入 ...

  5. “全栈2019”Java第四十四章:继承

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. 孤荷凌寒自学python第四十四天Python操作 数据库之准备工作

     孤荷凌寒自学python第四十四天Python操作数据库之准备工作 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天非常激动地开始接触Python的数据库操作的学习了,数据库是系统化设计 ...

  7. Android项目实战(四十四):Zxing二维码切换横屏扫描

    原文:Android项目实战(四十四):Zxing二维码切换横屏扫描 Demo链接 默认是竖屏扫描,但是当我们在清单文件中配置横屏显示的时候: <activity android:name=&q ...

  8. 第四十四个知识点:在ECC密码学方案中,描述一些基本的防御方法

    第四十四个知识点:在ECC密码学方案中,描述一些基本的防御方法 原文地址:http://bristolcrypto.blogspot.com/2015/08/52-things-number-44-d ...

  9. 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s

    总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8 ...

  10. Spark(四十四):使用Java调用spark-submit.sh(支持 --deploy-mode client和cluster两种方式)并获取applicationId

    之前也介绍过使用yarn api来submit spark任务,通过提交接口返回applicationId的用法,具体参考<Spark2.3(四十):如何使用java通过yarn api调度sp ...

随机推荐

  1. Sonatype安装

    https://www.cnblogs.com/wotoufahaiduo/p/11223834.html Sonatype Nexus Repository Manage admin ccf0cab ...

  2. 关于定义变量名为"name"的坑!!!

    昨天下午没有什么工作可做,闲来无事就上博客园看看了,有个问题让我一直很纳闷. 直接上代码吧: 再用表达式创建函数时遇到的问题,这里的代码按照正常逻辑只有那个在变量定义后面的函数执行打印的值才是&quo ...

  3. UVA572 Oil Deposits DFS求解

    小白书上经典DFS题目. 1. 递归实现 // from: https://www.cnblogs.com/huaszjh/p/4686092.html #include <stdio.h> ...

  4. Istio1.1.8部署

    istio安装 整体步骤: 下载 Istio 发行版. 完成必要的 Kubernetes 平台设置 检查对 Pod 和服务的要求. 安装高于 2.10 版本的 Helm 客户端. 安装之前的下载和准备 ...

  5. SVN无法检出项目

    情况说明: SVN的管理员给我一个项目的检出权限,我用浏览器可以访问,TortoiseSVN无法检出,提示没有访问URL的权限,不能检出. SVN管理员交流别人可以使用,我用同事的电脑,使用我的账号检 ...

  6. iniparser——C配置文件解析库

    简介 ini文件则是一些系统或者软件的配置文件,iniparser是免费.独立的INI解析器,Github地址(也是主要更新地址)请点击这个,官网上的tarball版本比较老,主要是为了保留之前的di ...

  7. lvm逻辑卷扩容报错解决

    报错: [root@centos21 space]# resize2fs /dev/centos/root resize2fs (-Dec-) resize2fs: Bad magic number ...

  8. String,StringBuffer,StringBuilder区别(笔记)

    String类被final修饰,创建的对象为不可变对象,属于字符串常量. 而StringBuffer与StringBuilder创建的属于字符串常量. StringBuffer的方法大多用了Synch ...

  9. SHA-1算法——(2)

    地址:https://www.alvestrand.no/objectid/1.3.14.3.2.26.html 地址:http://oidref.com/1.3.14.3.2.26 这个值好像是个标 ...

  10. 类X509Certificate2

    X509Certificate2类的初始化. 文章:使用X509Certificate2类操作证书文件 参考:https://docs.microsoft.com/zh-cn/dotnet/api/s ...