在压力测量工具的制作中,我们对——吞吐量的计算存在争议。
在性能测试中,吞吐量计算有两个常见公式。
公式1 :吞吐量=并发行数/平均响应时间
公式2 :吞吐量=请求总数/总时间
公式1、2大家应该都接触过。 虽然外观可能不同,但实际上理论上可以。 首先可以从C=nL/T导出。
并发=请求总数*平均响应时间/总时间
=”并发/平均响应时间=请求总数/总时间
=)公式1=公式2
接下来,建立三种模型进行进一步验证。
第一套模型
共有四个线程,同时发送了四个请求。 其中3个需要1s,1个需要2s,整体流程需要2s。
公式1 :
平均响应时间=(112 )/4=1.25s;
合并=nL/T=4*1.25/2=2.5
吞吐量=2.5/1.25=2笔/秒
公式2 :
吞吐量=总数/总时间=4/2=2件/秒
第二组模型
总共有四个线程,同时发送了四个请求,四个请求的时间都是1s,在1s内全部发送。
公式1 :
平均响应时间=(111 )/4=1s
合并=nL/T=4*1/1=4
吞吐量=4/1=4件/秒
公式2 :
吞吐量=总数/总时间=4/1=4件/s
第三组模型
总共有四个线程,四个请求都需要1s,但发送线程时出现异步现象,总共持续1.5s完成所有请求。
公式1 :
平均响应时间=(111 )/4=1s
合并=nL/T=4*1/1.5=2.67
吞吐量=2.67/1=2.67件/秒
公式2 :
吞吐量=总数/总时间=4/1.5=2.67件/秒
从我们建立的模型来看,两个公式的计算结果相等。 但是,这种平衡是以合并稳定为基础的,合并变化后结果会出现差异。 让我们来看看一组实际的压力测量数据
从上图可以看出,在实际的压迫测量中,两个公式还略有不同。 这是因为我们本来预计并发=工具线程数。 但是,由于在压迫测量中实际的同时执行发生了变化,所以将实际的同时执行次数反算
计算出的实际并发数略低于刀具线程数。
结论
1、单接口测量时,我们通过“请求总数/总时间”获得吞吐量; 接着,可以使用“吞吐量*平均响应时间”来获得实际的并发,这可以用于观察系统实际所承受的并发;
2、多接口压力测试时,由于短板效应,表明同一过程所有接口获得的请求总数和总时间相同,“请求总数/总时间”不适合计算每个子接口的吞吐量