目 录CONTENT

文章目录

性能指标定义的期望值

测试小天地
2024-03-04 / 0 评论 / 0 点赞 / 1,168 阅读 / 3,195 字

背景

当我们接到一个新项目/新需求,经评估需要进行性能测试,那么我们要开始进行性能测试,就需要定义的期望值,这些指标有哪些呢?他们都是什么含义?以及他们的标准是什么?本文将围绕这些进行讲解

性能指标介绍

  1. 性能测试通常分为5大指标:响应时间,吞吐量,并发用户数,CPU使用率,内存使用率
  2. 性能测试同时的指标又分为外部指标和内部指标
    a. 外部指标:响应时间,吞吐量,错误率
    b. 内部指标:CPU,内存,网络,磁盘IO

响应时间

用户期望在进行基本操作时获得快速响应
● 从业务角度来看,吞吐量指每秒事务数。单位:“Requests/Second”
● 从网络角度来看,吞吐量指每秒字节数,用来衡量网络的流量。单位:“Bytes/Second”

吞吐量

业务需求和用户量通常会影响系统的吞吐量期望值
每秒处理的请求数是一个关键指标,具体取决于应用程序的性质
● tps: 每秒事务数(tps): 每秒事务数,即控制服务器每秒处理的事务请求的数量
● qps(每秒查询数): 每秒查询数,即控制服务器每秒处理的指定的请求的数量

并发用户数

确定系统在同时处理的用户数量上的能力
期望值根据业务预期的最大用户数和系统设计进行设定

事务,即业务

一个事务可以对应多个请求或者一个请求
● 一个事务对应一个请求时: tps = qps
● 一个事务对应N个请求时,qps = n * tps

资源利用率

CPU、内存和网络利用率等资源的使用情况

  1. CPU利用率: 衡量系统中的中央处理器(CPU)的使用率。期望值的设定通常与系统性能需求和负载相匹配。例如,系统的 CPU 利用率应保持在合理范围内,以确保系统响应迅速且不过度消耗 CPU 资源。
  2. 内存利用率: 检查系统内存的使用情况,包括物理内存和虚拟内存。过高的内存利用率可能导致系统性能下降,甚至出现内存不足的情况。
  3. 磁盘利用率: 指磁盘空间的使用情况。磁盘利用率的期望值通常与系统存储需求和备份策略相关。确保有足够的可用磁盘空间对系统的正常运行至关重要。
  4. 网络带宽利用率: 衡量网络连接的带宽使用情况。对于涉及网络传输的应用程序,期望网络带宽利用率要在合理范围内,以避免网络拥塞和延迟。
  5. 数据库连接池利用率: 对于涉及数据库操作的应用程序,关注数据库连接池的利用率是重要的。确保数据库连接的有效使用,避免过度连接或连接泄漏。
  6. I/O 利用率: 检查输入/输出(I/O)操作对系统资源的利用情况。过高的 I/O 利用率可能会影响系统性能,特别是在大规模数据读写的情况下。例:导致交易执行时i/o处等待

错误率

  1. 期望最小化错误发生的频率。
  2. 这可以包括页面错误、交易错误等。

期望值的设定应与业务的敏感性和容忍度有关,例如如下是业界的部分例子

  1. HTTP 错误率: 对于Web应用程序,HTTP错误率是一个关键指标。这包括HTTP状态码,如404(未找到)或500(内部服务器错误)。较低的HTTP错误率通常是期望的。
  2. 事务错误率: 对于事务性应用程序,例如金融系统或电子商务平台,事务错误率是一个关键指标。它反映了在处理业务事务时发生错误的频率。
  3. 数据库错误率: 监测数据库操作中的错误,包括查询失败、事务回滚等。数据库错误率的升高可能表明数据库连接问题、查询优化问题或者数据一致性问题。
  4. 服务调用错误率: 对于分布式系统或微服务架构,监测服务调用的错误率是重要的。这包括在服务之间进行通信时发生的错误。
  5. 响应超时率: 衡量系统对请求作出响应所花费的时间是否超过了预定的时间。高响应超时率可能影响用户体验,特别是对于实时性要求较高的应用。
  6. 日志和异常错误率: 分析系统日志和异常报告,了解系统中发生的各种错误类型。这可以帮助定位和解决潜在问题。

页面加载时间(可选)

对于Web应用程序,用户可能期望页面在特定的时间内加载完成,以提供良好的用户体验
它表示从用户发起请求到完全加载页面所需的总时间。较短的页面加载时间通常与更好的用户体验和高效的网站性能相关

  1. 完全加载时间: 衡量从用户请求页面到页面完全加载所有内容所经历的时间。这包括 HTML、CSS、JavaScript、图像以及其他媒体资源的加载时间。
  2. 首次渲染时间: 衡量浏览器开始渲染页面的时间。这可能并不表示所有内容都已加载完成,但用户可以看到页面的一部分。更早的首次渲染通常与更好的用户体验相关。
  3. 首次内容渲染时间: 衡量浏览器首次渲染任何页面内容的时间。与首次渲染时间相似,但更关注用户能够看到的实际内容。
  4. 白屏时间: 用户看到页面内容之前的时间,即浏览器的加载过程中,屏幕保持空白的时间。
  5. 可交互时间: 用户可以与页面进行交互的时间。这包括页面完全加载、JavaScript 执行完毕以及用户可以点击和滚动的时间。
  6. 资源加载时间: 监测各种资源(如图片、CSS、JavaScript 文件等)的加载时间,有助于确定哪些资源可能成为性能瓶颈。

性能指标计算/统计方式

响应时间

  1. 网络传输时间:N1+N2+N3+N4
  2. 应用服务器处理时间:A1+A3
  3. 数据库服务器处理时间:A2
    响应时间=N1+N2+N3+N4+A1+A3+A2

吞吐量

  1. Web 应用程序的吞吐量
    a. 吞吐量=处理的请求数/时间(秒)
    ⅰ. 例如,如果在一秒钟内处理了100个HTTP请求,则吞吐量为100 RPS
  2. 数据库的吞吐量
    a. 吞吐量=完成的事务数/时间(秒)
    ⅰ. 例如,如果在一秒钟内完成了50个数据库事务,则吞吐量为50 TPS
    b. 吞吐量=执行的查询数量/时间(秒)
    ⅰ. 例如,如果在一秒钟内执行了200个数据库查询,则 QPS 为 200
  3. 网络服务的吞吐量
    a. 吞吐量=传输的数据量/时间(秒)
    ⅰ. 例如,如果在一秒钟内传输了1兆字节的数据,则吞吐量为1 MBps

并发用户数

经典公式

一般来说,利用以下经验公式进行估算系统的平均并发用户数和峰值数据
(n:平均每天访问用户数,L:用户平均每天的访问时长,T:被考察的时间长度,可以理解为一天内有多长时间有用户访问系统)

  1. 平均并发用户数的计算:C=n*L/T
  2. 并发用户数峰值计算:C=C+3*根号C(C是并发用户峰值,C是平均并发用户数,该公式遵循泊松分布理论)
举例:

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

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

通用公式

对绝大多数场景,我们用(用户总量/统计时间)影响因子(一般为3)来进行估算并发量。
比如,以乘坐地铁为例子,每天乘坐人数为5万人次,每天早高峰是7到9点,晚高峰是6到7点,
根据二八法则,80%的乘客会在高峰期间乘坐地铁,则每秒到达地铁检票口的人数为:50000
80%/(36060)=3.7约4人/S,考虑到安检,入口关闭等因素,实际堆积在检票口的人数肯定比这个要大,假定每个人需要3秒才能进站,那实际并发应为4人/s*3s=12,当然影响因子可以根据实际情况增大!

根据系统在线用户数计算

并发用户数 = 实际系统最大在线用户数的8%到12%
在进行并发用户数评估的时候,不仅要满足当前的性能需求,还要满足未来2~3年不断增长的业务量和用户量的需求。所以评估时候要考虑未来几年的业务增长率。

根据TPS估计

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

事务,即业务

通过每秒钟执行的事务数量,即事务吞吐量(Transactions Per Second,TPS),来评估系统性能

  1. 事务吞吐量 (TPS)=执行的事务数量/时间(秒)
    a. 例如,如果在一秒钟内执行了100个事务,则事务吞吐量为100 TPS

资源利用率

  1. CPU使用率:指用户进程与系统进程消耗的CPU百分比,长时间情况下,一般不超过80%;
  2. 内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,内存使用率一般不超过80%;
  3. 磁盘I/O: 磁盘主要用于存取数据,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据的时候对应的是写IO操作,取数据的时候对应的是是读IO操作,一般使用磁盘用于读写操作所占用的时间百分比度量磁盘读写性能;
    a. 如:Linux命令:iostat -d -x # -d 显示磁盘使用情况,-x 显示详细信息%util: 一秒中有百分之多的时间用于 I/O,如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷
  4. 网络带宽:一般使用计数器Bytes Total/sec来度量,其表示为发送和接收字节的速率,包括帧字符在内;判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较;

错误率

  1. 错误率(%)=(错误数量/总请求数)×100%
    a. 例如,如果在一次性能测试中,总共发送了1000个请求,其中有50个请求失败,那么错误率为 50/1000×100%=5%。

页面加载时间(可选)

记录每个用户请求的页面加载时间

性能测试通过标准

image

0

评论区