性能测试系列(3)-常用的性能指标,对性能指标的解释
性能指标有两种
- 业务指标
- 技术指标
通常我们会从两个层面定义性能场景的需求指标,它们有映射关系,技术指标不能脱离业务指标
并发
狭义理解
- 指同一个时间点执行相同的操作(如:秒杀)
广义理解
- 同一时间点,向服务器发起的请求(可能是不同的请求)
- 只要向服务器发起请求,那么服务器在这一时间点内都会收到请求(不管是不是同一个请求)
并发用户数(重点)
-
同一时间点,发出请求的用户数,一个用户可以发出多个请求
和并发的关系
-
假设有 10 个用户数,每个用户同一时间点内发起 2 个请求,那么服务器收到的请求并发数就是 20
相关概念
- 系统用户数:系统累计注册用户数,不一定在线
- 在线用户数:在线用户可能是正常发起请求,也可能只是挂机啥操作都没有【在线用户数≠并发用户数】
- 线程数:在 jmeter 中,线程数和并发用户数等价
事务
- 客户端向服务器发送请求,然后服务器做出响应的过程
- 登录、注册、下单等功能都属于一个事务
- 一个事务可能会发起多个请求
jmeter相关
-
jmerter 中,默认一个接口请求,就是一个事务;但也支持多个接口整合成一个事务
若一个业务或事务有多个接口,那么多个单接口的性能指标值相加 ≠ 业务或事务的性能指标值
看看还有哪些性能指标值
响应时间(response time)
- 概念:从发起请求到收到请求响应的时间
- 包含:Request Time 和 Response Time
- 等价:发起请求网络传输时间 + 服务器处理时间 + 返回响应网络传输时间
(在做性能测试时,要尽可能的降低网络传输时间,这样最终得出的 RT 会无限接近服务器处理时间,所以我们要把网络环境搞好)
(事务请求响应时间,完成单个事务所用的时间,1个事务可能包含多个请求)
TPS(Transaction Per Second,最主要的指标)
-
服务器每秒处理事务数,衡量服务器处理能力的最主要指标
T是如何定义的
- 在不同的行业、业务中,TPS 定义的颗粒度可能是不同的
- 所以不管什么情况下,需要做性能测试的业务的相关方都要知道你的 T 是如何定义的
定义TPS颗粒度
- 一般会根据场景的目的来定义 TPS 的粒度
- 接口层性能测试:T 可以定义为接口级
- 业务级性能测试:T 可以定义为每个业务步骤和完整的业务流
举例
如果要单独测试接口 1、2、3,那么 T 就是接口级
如果从用户角度下订单,那 1、2、3 都在一个 T 中,就是业务级
所以,性能中 TPS 中 T 的定义取决于场景的目标和 T 的作用
如何去测试
按照接口级脚本----业务级接口层脚本 ----- 用户级脚本 去调用去测试
QPS(Queries per second)
- 每秒查询率,在数据库中每秒执行 SQL 数量
- 一个请求可能会执行多条 SQL
- 某些企业可能会用QPS代替TPS
- 也是衡量服务端处理能力的一个指标,但不建议使用
RPS(Request per second)
- 简单理解(每秒请求数,用户从客户端发起的请求数)
- 就是说用户在那一秒点击一次,然后发送了3个请求,这3个请求分别调了A服务,B服务,C服务各自两次。但是这个RPS是3 并不是2+2+2
HPS(Hit per second)
- 点击率,每秒点击数
- 有直接理解为用户在界面上的点击次数
- 一般在性能测试中,都用来描述 HTTP Request,那它代表每秒发送 HTTP 请求的数量,和 RPS 概念完全一样
- HPS 越大对 Server 的压力越大
CPS/CPM
- 每秒/每分钟调用次数
- 通常用来描述 Service服务 层的单位时间内被其他服务调用的次数 (
- 就是说用户在那一秒点击一次,然后发送了3个请求,这3个请求分别调了A服务,B服务,C服务各自两次。然后这个分别是 2 ,2 ,2次
吞吐量(Throughput)
- 单位时间内,网络处理的请求数量(事务/s)
- 网络没有瓶颈时,吞吐量≈TPS
资源利用率
- 服务器资源的使用程度,比如服务器(应用、服务器)的CPU利用率,内存利用率,磁盘利用率,网络带宽利用率
- 一般不超过80%