软件性能指标
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、qps的区别
tps=hps=qps
一般情况:
1、tps 来衡量项目整体业务
2、qps 衡量接口查询次数
3、hps 表示对服务器点击请求次数
TPS(Transaction per second) 是估算应用系统性能的重要依据。其意义是应用系统每秒钟处理完成的交易数量。
一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。 系统整体处理能力取决于处理能力最低模块的TPS 值。依据经验,应用系统的处理能力一般要求在10-100左右。不同应用系统的TPS有着十分大的差别,一般需要通过性能测试进行准确估算。
普通计算公式:tps=总请求数 /总时间
二八原则计算方法:tps=总请求数*0.8/(总时间*0.2) 更能满足用户需求
QPS(每秒查询数)、TPS(每秒事务数)是吞吐量的常用量化指标,另外还有HPS(每秒HTTP请求数)。注,网络没有瓶颈的时候,服务器每秒处理的事物数应该等于吞吐量数值
跟吞吐量有关的几个重要是:并发数、响应时间。
QPS(TPS),并发数、响应时间它们三者之间的关系是:
QPS(TPS)= 并发数/平均响应时间
============================================================
HPS(Hits per Second)
HPS (每秒点击次数):是指发起请求时, 服务端对请求进行响应的页面资源对应的请求数量.
HPS是指在一秒钟的时间内用户对Web页面的链接、提交按钮等点击总和。 它一般和TPS成正比关系,是B/S系统中非常重要的性能指标之一。
throughput:分为网络吞吐量和事务吞吐量,当作为事务吞吐量时,采用TPS来衡量。
当作为网络吞吐量时(LR分析器中的throughput统计图是网络吞吐量),与HPS有一定的联系,但是不是必然的正比关系。
当然在发送的报文或请求的大小一定的情况下,HPS越高,Throughput也相应的越大。
一般情况下,发送报文或请求较大时的HPS会比发送报文或请求较小时的HPS小,但较大报文或请求的Throughput不一定比较小报文或请求的Throughput小
注意:
1. 日常操作中, 对页面的点击动作不是这里说的点击数
2. 该指标只在 Web 项目中需要注意
============================================================
3、qps
qps每秒查询率:
qps=总请求数 /(进程总数*请求时间)=请求数/秒数
============================================================
5、吞吐量 、吞吐率
吞吐量:单位时间内处理的请求数量(事务/s)(衡量网络)
吞吐量是指单位时间内系统能处理的请求数量,体现系统处理请求的能力,这是目前最常用的性能测试指标。
吞吐量:吞吐量=请求数 /总时间
一个省份接口139ms
吞吐量计算:
(1)接口数/时间
1/139ms=0.007194244604316ms
(2)0.007194244604316 *1000/sec=7.1942244604316546约等于7.2sec
=======================================
吞吐率:单位时间内通过的数据的平均速率(kB/s)/也可以指单位时间内处理请求数量
如,请求数据多少k,这个数据在网络中需要传输的时间
吞吐率公式:
吞吐率=总请求数/处理请求总时间 (字节数 / 每秒)
1/139m
吞吐率:
受带宽限制,带宽越大,吞吐率上线下能越高
备注:字节数/单位时间
================================
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、点击率、点击量
点击率: 单位时间内点击的次数‘(tps)
公式:请求数/ 时间
点击量:点击的数量 (hps)
公式:点击数 /时间
点击率表现不正常原因:
(1)客户端出现问题,如网络
(2)脚本代码问题
=========================================
9、错误率
定义: 错误率指系统在负载情况下,失败交易的概率。
错误率 = (失败交易数/交易总数)*100%
注意:
1. 大多系统都会要求无限接近于 100% 成功率, 因此, 错误率一般都非常低
2. 相对稳定的系统产生的错误率又称超时率(由网络传输导致的)
======================================================
硬件性能指标
10、资源的利用率(包含cpu、内存、磁盘I/O等):
cup
定义: 系统资源(CPU/内存/磁盘/网络)使用占比(使用量/总量*100%)
利用率指标:(没有特殊要求情况下)
1. CPU 不超过 75%-85%
2. 内存不超过 80%
3. 硬盘不超过 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开销增加;内存里数据不够用,才用磁盘中取数据。
================================================================
一、面试题:
1、性能测试关注哪些指标?(软件指标,硬件指标)
2、你做过性能测试?你是怎么做的性能测试?
3、目前并发500你会如何操作?
4、为什么要做性能测试?
5、性能测试流程?
6、性能测试中你发现问题如何处理?
7、你们性能测试指标是什么?
8、性能测试常见的现象有哪些?
9、详细说下性能指标代表的意思?
10、性能测试中如何录制脚本,并做参数化?