浅谈软件性能测试中关键指标的监控与分析

2023-05-16

浅谈软件性能测试中关键指标的监控与分析

一、软件性能测试需要监控哪些关键指标?

软件性能测试的目的主要有以下三点:

Ø  评价系统当前性能,判断系统是否满足预期的性能需求。

Ø  寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题。

Ø  判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能。

而对于用户来说,则最关注的是当前系统:

Ø  是否满足上线性能要求?

Ø  系统极限承载如何?

Ø  系统稳定性如何?

       因此,针对以上性能测试的目的以及用户的关注点,要达到以上目的并回答用户的关注点,就必须首先执行性能测试并明确需要收集、监控哪些关键指标,通常情况下,性能测试监控指标主要分为:资源指标和系统指标,如下图所示,资源指标与硬件资源消耗直接相关,而系统指标则与用户场景及需求直接相关。

 

性能测试监控关键指标说明:

Ø  资源指标

CPU使用率:指用户进程与系统进程消耗的CPU时间百分比,长时间情况下,一般可接受上限不超过85%。

内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存使用率可接受上限为85%。

磁盘I/O: 磁盘主要用于存取数据,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据的时候对应的是写IO操作,取数据的时候对应的是是读IO操作,一般使用% Disk Time(磁盘用于读写操作所占用的时间百分比)度量磁盘读写性能。

网络带宽:一般使用计数器Bytes Total/sec来度量,Bytes Total/sec表示为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。

Ø  系统指标:

并发用户数:某一物理时刻同时向系统提交请求的用户数。

在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求。

平均响应时间:系统处理事务的响应时间的平均值。事务的响应时间是从客户端提交访问请求到客户端接收到服务器响应所消耗的时间。对于系统快速响应类页面,一般响应时间为3秒左右。

事务成功率:性能测试中,定义事务用于度量一个或者多个业务流程的性能指标,如用户登录、保存订单、提交订单操作均可定义为事务,如下图所示:


单位时间内系统可以成功完成多少个定义的事务,在一定程度上反应了系统的处理能力,一般以事务成功率来度量,计算公式如下所示:

超时错误率:主要指事务由于超时或系统内部其它错误导致失败占总事务的比率。

二、如何监控关键指标?

Ø  资源指标监控

主要针对各服务器系统平台(Windows、Linux、Unix等)资源使用进行监控。

可以使用系统自带的性能监控工具或者第三方工具进行监控,如Windows系统自带的“系统性能监视器”,如下图所示:


Linux系统下,free、vmstat、sar、iostat等命令监控内存、CPU、磁盘IO等的使用情况,如下图所示:


第三方监控工具,如spotlight,spotlight是quest公司开发的一款可以针对多种系统平台及数据库进行监控的可视化工具,如下图所示:


Nmon是IBM提供的监控AIX和Linux系统资源的免费工具,可以对收集的资源信息通过Excel进行统计分析形成直观的统计图,如下图所示:


Ø  系统指标监控

系统指标监控一般通过性能测试工具(如LoadRunner、Jmeter等)以图形化方式监控,如下图所示,并发用户数与平均响应时间关系图。


三、如何分析监控的关键指标?

通过第二部分监控收集到性能度量关键指标,如何进行分析,并判断是否存在性能瓶颈呢?以下主要从资源指标与系统指标两方面进行阐述。

Ø   资源指标分析

判断CPU是否是瓶颈的方法:一般情况下CPU满负荷工作,有时候并不能判定为CPU出现瓶颈,比如Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化,即CPU尽可能最大化使用。因此,一般判断CPU为瓶颈,主要从两方面:一是CPU空闲持续为0,二是运行队列大于CPU核数(经验值3-4倍),即可判定存在瓶颈,对于CPU高消耗主要由什么引起的,可能是应用程序不合理造成,也可能是硬件资源不足,需要具体问题具体分析,比如问题SQL语句引起,则需要跟踪并优化引起CPU使用过高的SQL语句。

判断内存是否是瓶颈的方法:一般至少有10%可用内存,内存使用率可接受上限为85%。当空闲内存变小时,系统开始频繁地调动磁盘页面文件,空闲内存过小可能是内存不足或内存泄漏引起,需要根据系统实际情况监控分析。

判断磁盘I/O是否是瓶颈的方法:磁盘I/O对于数据库服务器、文件服务器、流媒体服务器系统来说,更容易成为瓶颈,一般从以下几个方面对磁盘I/O进行分析判断:

①    计算每磁盘I/O数

每磁盘I/O数可用来与磁盘的I/O能力进行对比,如果经过计算得到的每磁盘I/O数超过了磁盘标称的I/O能力,则说明确实存在磁盘的性能瓶颈,每磁盘I/O计算方法如下表:

RAID类型

计算方法

RAID0

(Reads+Writes)/Numbers of Disks

RAID1

(Reads+2*Writes)/2

RAID5

[Reads+(4*Writes)] /Numbers of Disks

RAID10

[Reads+(2*Writes)] /Numbers of Disks

②    监控磁盘读写,如果磁盘长时间进行大数据量读写操作,且cpu等待超过20%,则说明磁盘I/O存在问题,考虑提高磁盘I/O读写性能。

判断网络带宽是否是瓶颈的方法:判断网络带宽是否是系统运行性能瓶颈的首要条件是网络带宽是否会影响系统交易执行性能。例如:减小网络带宽,并发用户数、响应时间与事务通过率等性能指标是否不能接受;或者增加网络带宽,并发用户数、响应时间与事务通过率等性能指标会得到明显提高。

在实际性能测试中,如果发现始终报连接超时,而实际手工访问可以正常访问,可以通过ping应用服务器IP或网关IP,如果出现网络严重延迟或丢包,则说明网络不稳定,需要检查网络。

通过对资源指标四个指标的分析,实际上各个方面都是互相依赖的,不能孤立的单从某个方面进行排查。当一个方面出现性能问题时,往往会引发其他方面的性能问题,例如,大量的磁盘读写势必消耗CPU和IO资源,而内存的不足会导致频繁地进行内存页写入磁盘、磁盘写到内存的操作,造成磁盘IO瓶颈,同时,大量的网络流量也会造成CPU过载,所以,在分析性能问题时,需要从各个方面进行考虑。

Ø  系统指标分析

并发用户数:系统能够支持的用户数是系统容量的重要标志,并发用户数用于度量系统在高并发量访问下,系统的并行处理能力,一般如果系统中存在死锁、资源争用,在并发访问下,由于请求处于队列等待中,系统响应就会随着时间变慢。

一般情况下,选用高吞吐量、高数据库I/O、高商业风险的业务功能进行并发用户访问测试。

判断系统能够承受的最大并发用户数,通常以满足以下条件为准:

1、业务功能操作平均响应时间在合理范围之内

2、事务成功率在合理范围之内

3、 系统运行无故障(无异常宕机)

4、系统资源指标使用在合理范围内

平均响应时间:对于客户端用户来说,最直观的体验就是访问该页面快或者慢,即响应时间的长短。比如在持续并发性能测试过程中,客户感知访问应用很慢,监控到的平均响应时间也逐渐变长,这时就需要先借助于监控到的资源指标,首先排除资源方面的限制因素,再从应用本身进行定位,如可以采用页面细分工具(如httpwatch、Loadrunner Anaysis中的页面组件细分)分析响应比较慢的页面。

事务成功率、超时出错率:事务成功率越高,则表明系统处理能力越大;而失败事务主要由于系统响应慢,导致访问业务功能超时,或者系统业务功能异常,不能正常访问等,需要根据事务错误提示信息,具体分析。

综上所述,软件性能测试是执行、监控—〉分析—〉调优不断进行的过程,即监控是为分析提供更多的参考数据,分析是为了进行调优,调优是解决当前系统存在的性能瓶颈,为用户提供更好、更快的客户体验。由于分析、调优需要根据具体问题进行具体分析,本文未做过多说明,只对通用的关键指标进行监控分析,建议在实际工作中可从资源指标与系统指标两个方面,层层检测、步步排查,性能问题就无处藏身,一旦找到出现问题的原因,性能问题也就迎刃而解!


【注】文章中有部分来自网络或其它书籍中的资料进行了综合整理。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈软件性能测试中关键指标的监控与分析 的相关文章

随机推荐

  • Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster)优缺点分析

    Redis 单机模式 xff0c 主从模式 xff0c 哨兵模式 sentinel xff0c 集群模式 cluster xff0c 第三方模式优缺点分析 Redis 的几种常见使用方式包括 xff1a 单机模式主从模式哨兵模式 senti
  • tomcat开机自启动

    有两种方式可以实现 xff0c 一种是自启动脚本 一种是将tomcat注册为服务 xff0c 设置服务自启动 一 自启动脚本 1 添加tomcat启动脚本到开机自启动项目中 vim etc rc d rc local 增加以下内容 xff1
  • jeecgboot @Transactional捕获异常并拿到返回值

    64 Transactional 和 64 RestControllerAdvice 并不冲突 回滚的同时拦截异常返回需要的值给前端 64 Override 64 Transactional rollbackFor 61 Exception
  • @AliasFor 注解使用规则

    64 AliasFor 顾名思义 xff0c 表示别名 1 它可以注解到自定义注解的两个属性上 xff0c 表示这两个互为别名 2 注解是可以继承的 xff0c 但是不能用来继承父注解的某个属性值 xff0c 可以通过在子注解对于的属性上加
  • Docker Desktop修改默认安装路径?

    原理 xff1a 建立一个目录的软链接 用管理员身份打开cmd窗口 xff0c 然后运行命令 xff1a mklink j 34 C Program Files Docker 34 34 D Program Files Docker 34
  • java web项目打包成exe安装程序

    需求 xff1a 由于java web项目 xff0c 需要依赖mysql数据库 tomcat容器 jdk等 xff0c 部署需要一定技术支持才能够完成 xff0c 操作繁琐 xff0c 希望简化 目标 xff1a 制作一个exe一键安装相
  • http 请求参数包含? & 处理

    escape encodeURI encodeURIComponent 区别详解 JavaScript中有三个可以对字符串编码的函数 xff0c 分别是 xff1a escape encodeURI encodeURIComponent x
  • 多个项目共用一个redis

    redis 数据库是由一个整数索引标识 xff0c 而不是由一个数据库名称 默认情况下连接到数据库0 因此多个项目如果配置不做修改都会使用0号数据库 xff0c 会发生冲突 所以 每个项目配置不同的 database 即可解决
  • LoadRunner中参数化技术详解

    LoadRunner中参数化技术详解 LoadRunner在录制脚本的时候 xff0c 只是忠实的记录了所有从客户端发送到服务器的数据 xff0c 而在进行性能测试的时候 xff0c 为了更接近真实的模拟现实应用 xff0c 对于某些信息需
  • 23种设计模式类图

    下边是23种设计模式的类图大汇总 xff0c 23种设计模式解析请移步 http blog csdn net qq 25827845 article details 52932234 1 创建类模式 2 行为类模式 3 结构类模式
  • navicat 复制表结构到word文档做数据库设计格式问题解决

    需求 xff1a 写数据库设计文档 xff0c 需要设计数据字典 xff0c 贴表结构 xff0c 如果是几百张表 一个个填工作量很大 解决方案 xff1a 1 sql查询所有字段 2 整体复制到excel 3 拆分表 xff0c 调整列项
  • vue图片压缩上传组件修改

    判断逻辑 大于200KB 压缩上传 xff0c 否则不做处理上传原始图片 1 安装插件 yarn add image conversion 2 引入 import compressAccurately from 39 image conve
  • new ScriptEngineManager().getEngineByName(“js“)返回null

    问题出现的场景 xff1a 本地开发和生产环境都没问题 xff0c 测试环境 用的docker 报空指针 new ScriptEngineManager getEngineByName 34 js 34 返回null js替换 JavaSc
  • vue a-collapse的默认全部展开

    思路 xff1a activekey的值为默认展开的项 xff0c 要想全部展开 xff0c 就得把所有的key值都加到 activekey中 如下例子 xff0c activekey 61 39 1 39 默认展开第一个 要想全部展开就需
  • 软件工程——软件结构图设计(变换分析设计、事务分析设计、混合流设计)

    结构化设计 SD 是以结构化分析 SA 产生的数据流图为基础 xff0c 将数据流图按一定的步骤映射成软件结构图 SC 一 数据流的类型 结构化设计的目的是要把数据流图映射成软件结构 xff0c 根据数据流的特性 xff0c 一般可分为变换
  • Linux下Appium+Python移动应用自动化测试实战之“Android Emulator Headless”

    腊月二十九写的那篇手把手定位元素编写用例的文章 xff0c 没想到在4天的时间获得了2000多的阅读量 作为一个成熟的概念和框架 xff0c 没想到热度竟然还这么高 博主果断放弃了今天下午的10公里越野 xff0c 加快推出Android
  • Hbase系列---内置过滤器

    HBase为筛选数据提供了一组过滤器 xff0c 通过这个过滤器可以在HBase中的数据的多个维度 xff08 行 xff0c 列 xff0c 数据版本 xff09 上进行对数据的筛选操作 xff0c 也就是说过滤器最终能够筛选的数据能够细
  • org.apache.maven.plugin.war.WarMojo

    maven工程pom文件报错 xff0c org apache maven plugin war WarMojo 在pom文件中的 lt build gt 标签内加入如下代码 lt plugins gt lt plugin gt lt gr
  • js实现各种进制的转换

    使用Integer toString 进制数即可
  • 浅谈软件性能测试中关键指标的监控与分析

    浅谈软件性能测试中关键指标的监控与分析 一 软件性能测试需要监控哪些关键指标 xff1f 软件性能测试的目的主要有以下三点 xff1a 评价系统当前性能 xff0c 判断系统是否满足预期的性能需求 寻找软件系统可能存在的性能问题 xff0c