问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

吞吐量如何计算?

创作时间:
作者:
@小白创作中心

吞吐量如何计算?

引用
1
来源
1.
https://www.coonote.com/note/how-to-calculate-throughput.html

在性能测试中,吞吐量的计算是一个核心指标,但其计算方法却常常引发争议。本文将通过理论推导和具体模型验证两种常见的吞吐量计算公式,并结合实际压测数据,探讨它们在不同场景下的适用性。

我们在压测工具制作中,一直存在一个争议——吞吐量的计算。在性能测试中,吞吐量的计算有两种常见的公式:

公式1: 吞吐量=并发数/平均响应时间
公式2: 吞吐量=请求总数/总时长

公式1、2大家应该都接触过,虽然看上去不一样,其实理论上都是ok的。首先我们可以从C = nL / T 推导:

并发=请求总数*平均响应时间 / 总时长
=> 并发 / 平均响应时间 = 请求总数 / 总时长
=> 公式1 = 公式2

然后我们构建三组模型进一步论证:

第一组模型

一共有4个线程,同时发了4笔请求,其中3笔耗时1s,一笔耗时2s,整个过程一共耗时2s。

公式1:
平均响应时间 = (1+1+1+2)/ 4= 1.25s ;
并发 = nL/T =4*1.25/2 =2.5
吞吐量 = 2.5 / 1.25 = 2 笔/s

公式2:
吞吐量 = 总笔数/总耗时 = 4/2= 2 笔/s

第二组模型

一共有4个线程,同时发了4笔请求,4笔请求耗时均为1s,1s内全部发送完毕。

公式1:
平均响应时间 = (1+1+1+1)/ 4= 1s
并发 = nL/T =4*1/1 =4
吞吐量 = 4 / 1= 4 笔/s

公式2:
吞吐量 = 总笔数/总耗时 = 4 / 1= 4 笔/s

第三组模型

一共有4个线程,4笔请求耗时均为1s,但线程发送出现不同步现象,一共持续1.5s完成全部:

公式1:
平均响应时间 = (1+1+1+1)/ 4= 1s
并发 = nL/T =4*1/1.5 =2.67
吞吐量 = 2.67 / 1= 2.67 笔/s

公式2:
吞吐量 = 总笔数/总耗时 = 4 / 1.5 = 2.67 笔/s

从我们构建的模型上看,两个公式计算的结果是相等的。但是,这种平衡是建立在并发稳定的基础上,并发如果变化,结果就会有差异。下面我们看一组真实的压测数据

从上图中看出,实际压测时,两个公式还是会有些微差别,这就是因为我们本来预想并发应该=工具线程数,但在压测过程中,实际并发发生了变化,我们再反推下实际的并发数

计算出的实际并发确实稍低于工具线程数。

结论

1、 在单接口压测时,我们用“请求总数/总时长”得到吞吐量;然后再用“吞吐量*平均响应时间”得到实际并发,此举可用来观察系统实际承受的并发;
2、 在多接口压测时,由于短板效应,同一个流程中的所有接口获得的请求总数和总时长都一样,显然“请求总数/总时长”计算各个子接口的吞吐量不合适,所以改用“并发/平均响应时间”,其中的并发数应在压测工具中埋点统计,不可简单使用工具线程数。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号