常用性能指标、性能指标评估及性能测试通过标准-程序员宅基地

技术标签: 性能指标评估  性能测试通过标准  性能测试  常用性能指标  

一、常用性能指标

1、并发用户数

指同一时间点对系统进行操作的用户数。准确说为"同时向服务器发送服务请求,给服务器产生压力的用户数量"

并发用户数和注册用户数、在线用户数的概念不同:

注册用户数一般指的是数据库中存在的用户数,在线用户数只是 ”挂” 在系统上,不一定对服务器不产生压力,而并发用户数一定会对服务器产生压力的。

2、每秒事务数(TPS)/每秒查询率(QPS)

2.1、TPS(Transactions Per Second):每秒事务事,单位时间内处理的事务数量,它表示系统的处理能力,这个值越大,说明处理能力越强。

事务是一个或者多个操作的集合,可以一个接口、多个接口、一个业务、多个业务等等。

2.2、QPS(Queries Per Second):每秒查询率,是一台服务器每秒能够响应的查询次数(数据库中的每秒执行查询sql的次数)

2.3、区别:

TPS:Transactions Per Second,意思是每秒事务数,一个事务可以包含一个操作,也可以包含多个操作。具体事务的定义,可以一个接口、多个接口、一个业务或者多个业务(业务流程)等等。

QPS:Queries Per Second,意思是每秒查询率,是一台服务器每秒能够响应的查询次数(数据库中的每秒执行查询sql的次数),显然,这个不够全面,不能描述增删改,所以,不建议用qps来作为系统性能指标。

关系:

如果是对一个查询接口(单场景)压测,且这个接口内部不会再去请求其它接口,那么tps=qps,否则,tps≠qps

如果是容量场景,假设n个接口都是查询接口,且这个接口内部不会再去请求其它接口,qps=n*tps

建议:

QPS是Query Per Second,是数据库中的概念,每秒执行条数(查询),被引申到压测中来了,但是不包括插入、更新、删除操作,所以不建议用qps来描述系统整体的性能;

3、响应时间(RT)

指客户端发起服务请求到服务器处理完服务请求并返回结果给客户端的时间。

另: 吞吐量(Throughput)含义

指的是单位时间内处理的客户端请求数量。

  • 从业务角度来看,吞吐量指每秒事务数。单位:“Requests/Second”
  • 从网络角度来看,吞吐量指每秒字节数,用来衡量网络的流量。单位:“Bytes/Second”

二、性能指标评估

1、背景

做性能测试之前,最好先定义清楚性能指标。这样我们才能评估测试结果是否满足预期。最理想的情况是,

开发、产品、项目经理已经提前定义好性能指标。但是理想和现实的差距非常大。

2、获取性能指标

如果用户有明确的性能指标,直接使用即可;如果没有,首先要进行需求分析,以获取满足要求的

性能指标,如通过业务调研、日志信息等获取系统最大在线用户数、业务分布、业务高峰时间段、

业务高峰期业务量等

3、性能指标计算/统计方式

3.1、性能测试范围:通过业务分布来确定性能测试的范围

3.2、并发用户数评估

(1)、经典公式

一般来说,利用以下经验公式进行估算系统的平均并发用户数和峰值数据

平均并发用户数的计算:C=n*L/T

并发用户数峰值计算:C^=C+3*根号C

1)n:平均每天访问用户数
2)L:用户平均每天的访问时长
3)T:被考察的时间长度,可以理解为一天内有多长时间有用户访问系统

举例:
假设系统A,该系统有5000个用户,平均每天大概600个用户要访问该系统(可以从系统日志从获得),对于一个典型用户来说,一天之内用户从登陆到退出的平均时间为0.2小时,而在一天之内,用户只有在8小时之内会使用该系统。

计算:
平均并发用户数为:C = 6000.2/8 = 15
并发用户数峰值为:C^ = 15 + 3
根号15 = 27

(2)、通用公式

对绝大多数场景,我们用(用户总量/统计时间)*影响因子(一般为3)来进行估算并发量。

比如,以乘坐地铁为例子,每天乘坐人数为5万人次,每天早高峰是7到9点,晚高峰是6到7点,

根据二八法则,80%的乘客会在高峰期间乘坐地铁,则每秒到达地铁检票口的人数为:

50000*80%/(3*60*60)=3.7

约4人/S,考虑到安检,入口关闭等因素,实际堆积在检票口的人数肯定比这个要大,假定每个人

需要3秒才能进站,那实际并发应为4人/s*3s=12,当然影响因子可以根据实际情况增大!

(3)、根据系统在线用户数计算

并发用户数 = 实际系统最大在线用户数的8%到12%

在进行并发用户数评估的时候,不仅要满足当前的性能需求,还要满足未来2~3年不断增长的业务量和用户量的需求。所以评估时候要考虑未来几年的业务增长率。

4、根据TPS估计

公式为 C = TPS*( RT+Think time)

3.3、TPS(每秒事务数):通过某时间段业务量的峰值来确定TPS(峰值才能真实反映服务器的最大处理能力),

TPS=脚本运行期间总的事务数/脚本运行时长 如果使用集合点策略,在脚本执行前的等待时间过程中,服务器没有处理事务,那么这个时候的TPS和理想中的结果不一致,比理想中的小。

中间可能会用到二八法则:指80%的业务量在20%的时间里完成。

TPS预估方法:进行业务调研,统计出业务分布(业务占比)、每个业务的高峰期以及每个业务在高峰期的业务量。也可以统计出总的业务量,然后根据业务分布及占比得出每种业务的业务量。

注意:

1、业务量评估要考虑未来2 ~ 3年的业务增长,以满足未来的性能要求。之所以2~3年是因为我们不会几个月做一次性能测试,也不会做完性能测试之后就再也不做性能测试。

2、TPS计算,使用二八法则更准确。

例:以目前生产核心系统交易量峰值680万笔/天为基数,每年20%的业务增长,柜面业务占比25%,上收业务占比柜面业务的40%

计算前端系统三年后业务量为680万*(1+20%)(1+20%)(1+20%)*25%*40%=117.5万笔/天。

以系统未来预期日交易量117.5万笔/天为测试目标,用常规性能测试TPS估算方法计算,峰值交易TPS为80%的交易量在20%的时间内产生,以系统交易时间12小时计算,测试目标TPS为:(117.5万0.8)/(120.2*3600秒) =109笔/秒。

结论:

1、限制TPS的原因:服务器本身性能、代码结构、客户端施加的压力以及网卡等。

2、利用并发用户数、期望响应时间,可以计算出TPS的期望值。TPS = 并发用户数/(RT+Think Time),实际TPS和响应时间都是单独计算出来的,两者不是互相计算出来的。虽然在宏观上是反比的关系,但是两者之间没有直接关系。

3、系统TPS会受到并发用户数的影响,刚开始会随着并发用户数的增加而逐渐增加,当系统进入繁忙期后,TPS会有所下降。利用TPS与并发用户数图,可以分析性能瓶颈。

举例说明:
1、当并发数增加到10的时候,响应时间始终都是1,TPS还在继续增加,说明并发不够,需要增加并发数以达到TPS的峰值。
2、如果继续增加并发用户数到20,而响应时间还是1,再增加并发用户数,响应时间小于1,说明TPS达到了峰值20。
3、继续增加并发用户数到100,则造成了线程等待,引起平均响应时间从1秒变成3秒,TPS也从20下降到9;

3.4、响应时间评估

(1)、用户感知正常响应时间的标准

2-5-8原则:

1).如果响应时间在2s内,用户会觉得系统很快

2).如果响应时间在2~5秒之间,用户会觉得系统的响应速度还可以

3).如果响应时间在2~8秒之间,用户会觉得系统的响应速度很慢,但还可以勉强接受

4).而当超过8秒后仍无法得到响应时,用户会觉得系统糟糕透了,或认为系统已经失去响应

(2)、用户感知特殊响应时间的标准

1).普通业务操作响应时间:5秒内

2).万级数据量查询响应时间:8秒内

3).百万级数据量查询响应时间:10秒内

4).千万级别数据量查询响应时间:20秒内

3.5、事务成功率

单位时间内系统可以成功完成多少个定义的事务,在一定程度上反应了系统的处理能力,一般事务成功率要求100%或大于99%

3.6、系统资源使用率

(1).CPU使用率:指用户进程与系统进程消耗的CPU百分比,长时间情况下,一般不超过80%;

(2).内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,内存使用率一般不超过80%;

(3).磁盘I/O: 磁盘主要用于存取数据,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据的时候对应的是写

IO操作,取数据的时候对应的是是读IO操作,一般使用磁盘用于读写操作所占用的时间百分比度量磁盘

读写性能;如:Linux命令:iostat -d -x # -d 显示磁盘使用情况,-x 显示详细信息

%util: 一秒中有百分之多少的时间用于 I/O

如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷

(4).网络带宽:一般使用计数器Bytes Total/sec来度量,其表示为发送和接收字节的速率,包括帧字符在内;判断网络连

接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较;

三、性能测试通过标准(参考)

性能测试通过标准包括服务端性能、前端性能和用户体验性能,常规通过标准如表所示:

1、通用互联网服务端性能

(1).TPS(每秒事务数)大于期望值

(2).响应时间小于期望值

(3).错误率小于0.5%(事务成功率大于99.5%)

(4).CPU使用率小于75%

(5).JVM内存使用率小于80%

2、用户感知正常响应时间的标准

2-5-8原则:

(1).如果响应时间在2s内,用户会觉得系统很快

(2).如果响应时间在2~5秒之间,用户会觉得系统的响应速度还可以

3.如果响应时间在5~8秒之间,用户会觉得系统的响应速度很慢,但还可以勉强接受

4.而当超过8秒后仍无法得到响应时,用户会觉得系统糟糕透了,或认为系统已经失去响应

3、用户感知特殊响应时间的标准

1.普通业务操作响应时间:5秒内

2.万级数据量查询响应时间:8秒内

3.百万级数据量查询响应时间:10秒内

4.千万级别数据量查询响应时间:20秒内

4、中间件的一些标准

1.当前正在运行的线程数不能超过设定的最大值

2.当前运行的JDBC连接数不能超过设定的最大值

3.GC频率不能频繁,特别是FULL GC更不能频繁,FullGC频率大于半小时每次。

5、全栈性能修炼宝典中的标准(借鉴):
在这里插入图片描述
对于新项目、还未上线的项目:

建议:可以不要管什么性能指标,直接开始测试,测试完成后,将测试结果发送给相关人员进行评估,最终决定测试结果是否满足系统性能要求。

六、其它说明:

为什么要减少FullGC频率:FullGC会产生应用程序停顿,整个应用程序线程都会被暂停,没有任何响应,有点像卡死的感觉。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/baidu_24752135/article/details/126148759

智能推荐

acwing 语法基础刷题 (第一讲习题)python C/C++ 第二天_"print(\"volume = %.3f"-程序员宅基地

文章浏览阅读230次。605. 简单乘积//C++版本 #include <bits/stdc++.h>using namespace std;int main(){ int a,b,X; cin>>a>>b; X=a*b; printf("PROD = %d",X); return 0;}#python版本a=int(input())b=int(input())print("PROD = %d"%(a*b))611. 简单计算/_"print(\"volume = %.3f"

[INFO] [copilotIgnore] inactive,github copilot没反应怎么解决_copilot no completions were found-程序员宅基地

文章浏览阅读1.9k次。这种情况下就是它的激活出现了问题,如果账号的使用权没有问题的话,就将该插件disable之后再重新enable,重新观察输出,就会看到copilot在重新链接引擎了,一次不行就多进行几次。在使用github copilot的时候,插件不工作,后台出现了这种输出,然后就能重新使用了,_copilot no completions were found

antd日期:禁止选择当天之前的日期_ant日期组件如下禁用当前之前的时间-程序员宅基地

文章浏览阅读175次。1、年月日——日期禁止当天之前的,不包括当天的(带有时间的除外)2、年月日——日期禁用当天之前的(包括当天的)_ant日期组件如下禁用当前之前的时间

在有序的数列中插入若干个数,使得数列再插入过程中始终保持有序s发_有序的数列中插入若干个数,每插入一个数都要保持有序。-程序员宅基地

文章浏览阅读3.2k次。题目的意思是:一个有序的数列中插入一个数,这个数列依然是有序的。1 3 5 7 9 当插入6时,数列应当变成这样1 3 5 6 7 9算法:原数组从最后一个数开始与number相比较。 如果number大于最后一个数,那么number就会插入到最后一个数后面 (array[j+1]=number),而且比较在这里就会结束了。程序中使用br..._有序的数列中插入若干个数,每插入一个数都要保持有序。

一个例子来全面比较一下传统测试与敏捷测试的区别_敏捷测试与传统测试的区别-程序员宅基地

文章浏览阅读1.2k次。这一讲的内容我想通过一个例子来全面比较一下传统测试与敏捷测试的区别,这个例子来自一本书——《凤凰项目:一个 IT 运维的传奇故事》。这是由美国的三位 DevOps 专家撰写的一本关于 IT 运维的小说。有人说,在 IT 咨询业,没读过这本书都不好意思跟人家谈 DevOps。别急,我们这一讲的重点的确不是 DevOps,而是比较传统测试与敏捷测试,一千个人眼里有一千个哈姆雷特,尽管大家对 DevOps 有不同的理解,但是,你要知道,DevOps 其实是敏捷开发向 IT 运维的自然延伸,它的原则和实践与_敏捷测试与传统测试的区别

VS2015中QT VS TOOLS Open Qt Project file 无反应报错Cannot run compiler 'cl'. Maybe you forgot to setup the_vs2015 qt tools 报错cmd32.exe-程序员宅基地

文章浏览阅读4.5k次。用VS2015中QT VS TOOLS 的Open Qt Project file 选项打开qt工程报错(Import): Generating new project of liteidex.pro file(qmake) : Using: C:\QT\QT5.9.1\5.9.1\MSVC2015\bin\qmake(qmake) : Working Directory: C:\_vs2015 qt tools 报错cmd32.exe

随便推点

【别了阿里】为何从大厂裸辞-程序员宅基地

文章浏览阅读476次,点赞14次,收藏10次。先给友友们交代一下个人背景:楼主22年毕业于一所985,大三下的时候在字节跳动实习过小半年,毕业后选了阿里巴巴的Offer,担任前端开发工程师的职位,尔来也有1年半的光载。

旋转目标检测非极大抑制库报错 No such file or directory: ‘:/usr/local/cuda-11.7:/usr/local/cuda-11.7/bin/nvcc‘_warnings.warn(msg.format('we could not find ninja.-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏6次。【代码】[Errno 2] No such file or directory: ‘:/usr/local/cuda-11.7:/usr/local/cuda-11.7/bin/nvcc‘_warnings.warn(msg.format('we could not find ninja.'))

011——人体感应模块驱动开发(SR501)_人体传感器csdn-程序员宅基地

文章浏览阅读888次,点赞16次,收藏14次。人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10uM 左右的红外线,被动式红外探头就是靠探测人体发射的 10uM 左右的红外线而进行工作的。人体发射的 10uM 左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。人体红外模块是一种能够检测人或动物发射的红外线而输出电信号的传感器。广泛应用于各种自动化控制装置中。_人体传感器csdn

(c++)vector——find方法的使用_vector find-程序员宅基地

文章浏览阅读3.9w次,点赞14次,收藏32次。## vector _find方法的使用 不同于map(map有find方法),vector本身是没有 find这一方法的,其find函数是依靠algorithm来实现的 所有要使用#include<algorithm> 例如:vector<int>::iterator it = find(vec.begin(),vec.end(),1); if(it != vec.end()) cout<<"found"<<endl; else _vector find

【STM32】EXTI---外部中断/事件控制器_stm32外部中断上升沿下降沿都触发 如何区分-程序员宅基地

文章浏览阅读5.4k次,点赞55次,收藏109次。EXTI——外部中断/事件控制器。外部中断简介,EXTI初始化结构体,外部中断控制实验。利用按键输入作为中断的外部输入,产生中断后,进入中断服务函数,实现LED状态的变化。_stm32外部中断上升沿下降沿都触发 如何区分

[vue3] error in ./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js-程序员宅基地

文章浏览阅读2.1k次,点赞10次,收藏8次。question使用vue-cli(4.5.13) create vue3(3.1.3)npm run servererrorerror in ./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.jssolution1办法1: 编辑配置文件vue.config.js此办法不行// vue.config.jsmodule.exports = { transpileDependencies: ['@vue/reactivi_in ./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js

推荐文章

热门文章

相关标签