性能指标详解
一、监听器中的插件
@gc - Active Threads Over Timeip 活动线程时间
@gc - AutoStop Listener 自动停止侦听器
@gc - Bytes Throughput Over Timejp 字节吞吐量随时间变化
@gc -Composite Graph 综合图
@gc - Connect Times Over Timejp 连接时间
@gc -Console Status Loggerjp 控制台状态记录器
@gc - DbMon Samples Collectorjp (DbMon Collectorjp样品收集器
@gc -Flexible File Writer 监听器之灵活的文件写入
@gc - Graphs Generatorjip 图形发生器
@gc - Hits per Second 每秒点击次数
@gc -JMXMon Samples Collectorjp (JMXMon样品收集器
@gc - Page Data Extractor 页面数据提取器
@gc - PerfMon Metrics Collectorjip 性能指标收集器
@gc - Response Codes per Secondjip 每秒响应数
@gc - Response Latencies Over Timejip 随时间间隔变化的响应延迟
@gc - Response Times Distributionjip 响应时间分布图
@gc - Response Times Over Timeip 随时间变化的响应时间
@gc - Response Times Percentilesjip 响应时间百分位数
@gc - Response Times vs Threadsjp 响应时间vs线程
@gc - Synthesis Report (filtered) 综合报告(过滤)
@gc - Transaction Throughput vs Threadsjip 整个线程的事务
@gc - Transactions per Second 每秒事务数
二、详解:
(1)@gc - Active Threads Over Timeip 活动线程时间
详解:Active Threads Over Time:每秒的活动线程数,X轴表示访问的时刻,Y轴表示活动线程数(并发数),F(X,Y)表示某个时刻的活动线程数。监听单位时间内活动的线程数。
横坐标是单位时间(单位是毫秒),
纵坐标是活动线程数(也就是并发数)
F(X,Y)表示某个时刻的活动线程数。
(2)@gc - AutoStop Listener(li色no) 自动停止侦听器
定义:设置当发生某些预期以外的状况时自动中止测试测
(1)average Response Time is greater than 10000ms for 10 seconds :连续10s平均响应时间大于10000ms就中止测试
(2)average Latency is greater than 5000ms for 10 seconds :链接10s平均等待时间大于5000ms就中止测试
(3)Error Rate is greater than 50% for 10 seconds :10s内错误率一直高于50%就中止测试
==================================================================
@gc - Bytes(柏子) Throughput (死了put) Over Timejp 字节吞吐量随时间变化
红色:每秒接受的字节数
蓝色:每秒发送的字节数
X轴:表示访问时间
Y轴表示每秒发送的字节数
==================================================================
@gc -Composite Graph 综合图
作用:在它的Graphs里面可以设置多少个图表一起展示,它可以同时展示多个图表;
目的:将一些图表结合在一起查看性能趋势和走向,有利于对比和结合查看性能情况,最重要分析性能拐点;
x轴:坐标是运行时间,
y轴:各性能数据的汇总值(其中有一些数据需要除以10)。
在Graphs里面能够设置多少个图表一块儿展现,它能够同时展现多个图表线程;这里能够将一些图表结合在一块儿查看性能趋势和走向,有利于对比和结合查看性能
=================================================================
@gc -Connect Times Over Time 连接时间
Connect Time Over Time(连接时间变化曲线图),随着时间变化,每个时间节点花费在连接上的平均时间脚本运行期间,事务(请求)建立连接所花费的平均时间变化趋势图
包括 SSL 三次握手的时间
当出现链 Connection Time Out 的错误时,Connect Time 就会等于链接超时时间
@gc -Console (肯色) Status Loggerjp 控制台状态记录器
这是一个简单的侦听器插件,当jmeter在非GUI模式下运行时,它将简短的摘要日志打印到控制台。它还以GUI模式将相同的信息写入jmeter.log。
请注意,显示的响应时间和延迟是平均值
@gc - DbMon Samples (森破) Collectorjp (克来克特)(DbMon Collectorjp样品收集器
许多数据库提供可通过sql访问的性能计数器。使用DbMon,您可以在测试运行时随时间绘制这些值。该插件还可以绘制可通过sql访问的其他值。
此屏幕快照显示了该插件用于绘制SQLServer的读写事务时的情况
@gc -Flexible File Writer 监听器之灵活的文件写入
@gc - Graphs Generatorjip 图形发生器
@gc - Hits per Second 每秒点击次数
@gc -JMXMon Samples Collectorjp (JMXMon样品收集器
@gc - Page Data Extractor 页面数据提取器
@gc - PerfMon Metrics Collectorjip 性能指标收集器
@gc - Response Codes per Secondjip 每秒响应数
@gc - Response Latencies Over Timejip 随时间间隔变化的响应延迟
@gc - Response Times Distributionjip 响应时间分布图
@gc - Response Times Over Timeip 随时间变化的响应时间
======================================================
@gc - Response Times Percentilesjip 响应时间百分位数
监听响应时间分布的百分比。
横坐标是请求数的百分比,
纵坐标是响应时间。此图表示有100%的请求响应时间在3s以内。
=================================================================
@gc - Response Times vs Threadsjp 响应时间vs线程
线程活动期间的响应时间监听。
x轴是活动的线程数(也就是并发数),
y轴坐标是响应时间(单位是毫秒)
======================================================================
@gc - Synthesis Report (filtered) 综合报告(过滤)
able:对应每一个http请求,显示的是http请求的Name;
.#Samples:表示这一次的测试中一共发出了多少请求;
Average:平均响应时间,指的是所有的请求的平均响应时间;
90%Line:90%用户的响应时间
Min:最小响应时间
Max:最大的响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数;
Throughput:吞吐量,默认情况下表示每秒完成的请求数;
Recived KB/Sec:每秒从服务器端接收到的数据量,以kb为计算的单位;
=====================================================
@gc - Transaction Throughput vs Threadsjip 整个线程的事务
每个活动线程数的事务吞吐量,X轴表示的是活动线程数,Y轴表示的是事务吞吐量,F(X,Y)的含义是当系统处于某个活动线程数时,系统当时的事务吞吐量是多少,
比如当有10个活动线程时,事务吞吐量是100/s,而当有20个活动线程时,事务吞吐量是50/s,说明随着用户访问的增加,系统的处理效率开始下降了,从这个图中可以找到一个临界点,在多大的活动线程数时,系统达到最大的吞吐量。
=======================================================
@gc - Transactions (全咋个选s) per (po额) Second 每秒事务数
Transactions per Second 插件的作用是在测试脚本执行过程中,监控查看服务器的TPS表现————比如整体趋势、实时平均值走向、稳定性等。
动态tps ,用来分析吞吐量,
x轴 表示时间
y轴 tps值
红色表示:tps值
绿色表示:失败值
最大tps值:大约20个 ,错误98个
详解:
jp@gc - Transactions per Second: 每秒事务数,服务器每秒处理的事务数,事务是脚本的一个特性,每个事务都包含开始事务和结束事务。事务用来衡量脚本中一行代码或多行代码的执行所耗费的时间,通过检测不同用户的TPS,可以估算出系统处理能力的拐点
p@gc - Bytes Throughput Over Time:不同时间吞吐量展示(图表) Throughput是按请求个数来展示的,比如说1.9c,就是每s发送1.9个请求,吞吐量是单位时间内处理的客户端请求数量。通常情况下,吞吐量用请求数/秒Or页面数/秒来衡量。从业务角度看,吞吐量也可以用访问人数/天Or页面访问量/天来衡量
吞吐量/传输时间,即单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数量,它是衡量网络性能的重要指标。通常情况下,吞吐率用“字节数/秒”来衡量,当然,也可以用“请求数/秒”和“页面数/秒”来衡量
@gc - Transactions per Second 每秒事务数
监听动态TPS:每秒事务数,性能测试中,最重要的2个指标之一,用来分析吞吐量。其中横坐标是运行时间,纵坐标是TPS值。红色表示通过的TPS,绿色表示失败的。
======================================================
三、软件性能指标定义
1、响应时间(RT)
响应时间是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。响应时间是指执行一个请求从开始到最后收到响应数据所花费的总体时间。
响应时间=发起请求网络传输时间+服务器处理时间+返回响应网络传输时间
2、平均响应时间、百分位响应时间
平均响应时间指的是所有请求平均花费的时间,如果有100个请求,其中 98 个耗时为 1ms,其他两个为 100ms。那么平均响应时间为 (98 * 1 + 2 * 100) / 100.0 = 2.98ms 。
百分位数( Percentile - Wikipedia )是一个统计学名词。以响应时间为例, 99% 的百分位响应时间 ,指的是 99% 的请求响应时间,都处在这个值以下。
拿上面的响应时间来说,其整体平均响应时间虽然为 2.98ms,但 99% 的百分位响应时间却是 100ms。
相对于平均响应时间来说,百分位响应时间通常更能反映服务的整体效率。现实世界中用的较多的是 98% 的百分位响应时间,比如 GitHub System Status 中就有一条 98TH PERC. WEB RESPONSE TIME 曲线。
平均响应时间: 所有请求的平均响应时间,取的平均值
95%percentile : 统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值按数值大小排列。如,处于p%位置的值称第p百分位数。
例如有100个请求, 每个请求的响应时间分别是 1-100 平均分布
平均响应时间: 1-100 的平均值,即 50.5
95% percentile : 按从小到大排序,累计第95百分位,也就是 95 (即样本里95% 的数据都不高于这个值)
3、并发用户数 (最大并发数,最佳并发数)
并发
狭义:指同一时间点,执行相同请求的操作(秒杀) ======集合点
广义:同一时间点,向服务器发起的请求(更多用于真正的性能测试)
并发数
并发数是指系统同时能处理的请求数量,这个也是反应系统的负载能力
并发用户数
同一时间点,执行请求的用户数
系统用户数:所有注册用户
在线用户数:在线用户,可能发起请求,可能没有发起请求
并发用户数(Jmeter中的线程数):在线,发起请求用户
如,10个人发起了20个请求
最佳并发用户数:当系统的负载等于最佳并发用户数时,系统的整体效率最高,没有资源被浪费,用户也不需要等待
最大并发用户数:系统的负载一直持续,有些用户在处理而有的用户在自己最大的等待时间内等待的时候我们需要保证
1、最佳并发用户数需大于系统的平均负载
2、系统的最大并发用户数要大于系统需要承受的峰值负载
4、TPS和HPS的区别
TPS(Transaction per second) 是估算应用系统性能的重要依据。其意义是应用系统每秒钟处理完成的交易数量。
一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。 系统整体处理能力取决于处理能力最低模块的TPS 值。依据经验,应用系统的处理能力一般要求在10-100左右。不同应用系统的TPS有着十分大的差别,一般需要通过性能测试进行准确估算。
HPS(Hits per Second)是指在一秒钟的时间内用户对Web页面的链接、提交按钮等点击总和。 它一般和TPS成正比关系,是B/S系统中非常重要的性能指标之一。
throughput:分为网络吞吐量和事务吞吐量,当作为事务吞吐量时,采用TPS来衡量。
当作为网络吞吐量时(LR分析器中的throughput统计图是网络吞吐量),与HPS有一定的联系,但是不是必然的正比关系。
当然在发送的报文或请求的大小一定的情况下,HPS越高,Throughput也相应的越大。
一般情况下,发送报文或请求较大时的HPS会比发送报文或请求较小时的HPS小,但较大报文或请求的Throughput不一定比较小报文或请求的Throughput小
点击数HPS (每秒点击次数):是指发起请求时, 服务端对请求进行响应的页面资源对应的请求数量.
注意:
-
日常操作中, 对页面的点击动作不是这里说的点击数
-
该指标只在 Web 项目中需要注意
5、吞吐量 、吞吐率
吞吐量:单位时间内处理的请求数量(事务/s)(衡量网络)
吞吐量是指单位时间内系统能处理的请求数量,体现系统处理请求的能力,这是目前最常用的性能测试指标。
QPS(每秒查询数)、TPS(每秒事务数)是吞吐量的常用量化指标,另外还有HPS(每秒HTTP请求数)。注,网络没有瓶颈的时候,服务器每秒处理的事物数应该等于吞吐量数值
跟吞吐量有关的几个重要是:并发数、响应时间。
QPS(TPS),并发数、响应时间它们三者之间的关系是:
QPS(TPS)= 并发数/平均响应时间
吞吐率:单位时间内通过的数据的平均速率(kB/s)
如,请求数据多少k,这个数据在网络中需要传输的时间
6、事务
指一个客户机向服务器发送请求然后服务器做出反应的过程。
Jmeter中默认一个接口请求就是一个事务。
Jmeter中也支持多个接口整体作为一个事务。
7、TPS/QPS(每秒事务数) (重点)
TPS:服务器每秒处理的事物数(衡量服务器处理能力的综合体现+最主要指标)
TPS是单位时间内处理事务的数量,从代码角度来说,一段代码或多段代码可以组成一个事务.单位时间内完成的事务数越多,服务器的性能越好
QPS:每秒查询率(如登录,可能会查询是否用户已存在,是否已登录,密码是否正确等)
TPS和QPS的区别?
TPS(transaction per second)是单位时间内处理事务的数量,QPS(query per second)是单位时间内请求的数量。TPS代表一个事务的处理,可以包含了多次请求。很多公司用QPS作为接口吞吐量的指标,也有很多公司使用TPS作为标准,两者都能表现出系统的吞吐量的大小,TPS的一次事务代表一次用户操作到服务器返回结果,QPS的一次请求代表一个接口的一次请求到服务器返回结果。当一次用户操作只包含一个请求接口时,TPS和QPS没有区别。当用户的一次操作包含了多个服务请求时,这个时候TPS作为这次用户操作的性能指标就更具有代表性了。
个人理解如下:
1、Tps即每秒处理事务数,包括了
1)用户请求服务器
2)服务器自己的内部处理
3)服务器返回给用户
这三个过程,每秒能够完成N个这三个过程,Tps也就是N;
2、Qps基本类似于Tps,但是不同的是,对于一个页面的一次访问,形成一个Tps;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。
例如:访问一个页面会请求服务器3次,一次访问,产生一个“T”,产生3个“Q”
8、点击率、点击量
“吞吐率”图和“点击率”图的区别:
“吞吐率”图,是每秒服务器处理的HTTP申请数。
“点击率”图,是客户端每秒从服务器获得的总数据量。
点击数:是衡量Web服务器处理能力的一个重要指标。它的统计是客户端向Web服务器发了多少次HTTP请求计算的。通常我们也用每秒点击次数(Hits per Second)指标来衡量Web服务器的处理能力。
9、错误率
定义: 错误率指系统在负载情况下,失败交易的概率。
错误率 = (失败交易数/交易总数)*100%
注意:
-
大多系统都会要求无限接近于 100% 成功率, 因此, 错误率一般都非常低
-
相对稳定的系统产生的错误率又称超时率(由网络传输导致的)
10、资源的利用率(包含cpu、内存、磁盘I/O等):
定义: 系统资源(CPU/内存/磁盘/网络)使用占比(使用量/总量*100%)
利用率指标:(没有特殊要求情况下)
-
CPU 不超过 75%-85%
-
内存不超过 80%
-
硬盘不超过 90%(容量占有率/读写时间比)
CPU进行判断和处理,能反应系统的繁忙程度,一般分系统CPU与用户CPU
Load Average:指一段时间内,CPU正在处理和等待CPU处理的任务,即CPU使用队列的长度统计信息
Memory:数据从内存上读取要比从磁盘上读取的速度要快,而内存经常出现内存泄露或内存溢出的现象
队列:队列较长,说明处理能力达到了极限或者遇到阻塞
IO:与磁盘交互
网络:重点关注网络流量,看是否存在网络带宽瓶颈
注:一般要求资源利用率不超过80%
硬件性能:
cpu
内存
磁盘(disk I/O)
网络(NETWORK I/0)
1、CPU
定义:
CPU指标主要指的CPU利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。
参考标准
CPU 利用率要低于业界警戒值范围之内,即小于或者等于75%;
CPU sys%小于或者等于30%;
CPU wait%小于或者等于5%;
2、内存
定义:
内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大
参考标准
现在的操作系统为了最大利用内存,在内存中存放了缓存,因此内存利用率100%并不代表内存有瓶颈,衡量系统内存是否有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。
3、磁盘
定义:
定义和解释:磁盘吞吐量简称为Disk Throughput,是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。
参考标准
磁盘指标主要有每秒读写多少兆,磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的的重要依据,一般情况下,磁盘繁忙率要低于70%。
4、网络
定义:
网络吞吐量简称为Network Throughput,是指在无网络故障的情况下单位时间内通过的网络的数据数量。单位为Byte/s。网络吞吐量指标用于衡量系统对于网络设备或链路传输能力的需求。当网络吞吐量指标接近网络设备或链路最大传输能力时,则需要考虑升级网络设备。
参考标准
网络吞吐量指标主要有每秒有多少兆流量进出,一般情况下不能超过设备或链路最大传输能力的70%。
CPU对数据进行判断以及逻辑处理,本身不能存储数据;这时cpu从内存取数据进行逻辑计算,如果内存没有数据,才会从硬盘读数据到内存,再对数据进行处理
就像人吃饭一样,cpu就是人,内存就是碗,硬盘就是饭锅!
当cpu进程等待,会造成内存开销的增加,内存不够用的时候会用到虚拟内存,导致虚拟内存的增加,这时磁盘IO开销就会增加,系统态sy%提升,cpu开销增加;内存里数据不够用,才用磁盘中取数据。