性能测试原理 - 吞吐量解析

  好多人对吞吐量的概念不是很清楚, 有人认为TPS就是吞吐量,也有人把单位时间内系统处理数据量(kilobytes per second)作为吞吐量,那么那个是正确的答案呢? TPS(transaction per second), 顾名思义,是单位时间内处理事物的数量。用TPS做吞吐量的标准比较含糊。因为一个事务的大小,事务的复杂程度不等。这个提法在Jmeter上提到过。它是侧重的是应用场景,是和业务服务密切相关的。如果衡量网络设备的吞吐量一般用单位时间数据传输量为标准更为贴切。在性能测试分析中经常会将两种方法一起使用,一个是满足应用的衡量需要,一个是作为分析和设计需要。


      吞吐量这个名词,在网站服务诞生之前吞吐量这个词就存在了. 那么那个时候的吞吐量是指什么,应用在设么场景之上呢? 港口吞吐量是指在一定期间内经由水路进、出港区范围并经过装卸的货物数量。又称港口吞吐能力。是衡量港口规模大小的最重要的指标。反映在一定的技术装备和劳动组织条件下,一定时间内港口为船舶装卸货物的数量,以吨数来表示。当网络进入人们生活中后, 也是用吞吐量来表示网络的传输能力. 因为,网络通过的是数据(data), 那么网络的吞吐量就自然是用单位时间内传输的数据大小来衡量, 应用服务器的吞吐量也是如此, 用服务器在单位时间内数据处理能力表示。在这个意义上讲,港口的吞吐量和网络设备,服务器的吞吐量的内含是一样的。


      如果一个港口设计吞吐量是26万吨。分别处理万吨轮5艘。千吨轮10艘,百吨轮200艘。处理装卸载能力每天,万吨轮1次;千吨轮2次;百吨轮3次。即:((5x10000x1)+(10x1000x2)+(200x100x3))x2=260000吨。如果进出港口的船一定按设计分布进出港口,那么港口是可以处理26万吨。但如果进入港口的全是万吨轮,万吨轮的泊位排队等待,所以,每天只有5艘的装卸载。很明显我们不能说港口只有5艘船处理能力的吞吐量?但是如果调度按设计每天让不同大小的运输船只进入港口,那么即可达到设计吞吐量。


      同理,如果网络服务器的吞吐量用TPS作为衡量标准,无疑也是含糊不清的。一个事务的大小,实现方式大有不同的决定了处理的时间和资源的多少,TPS也就不等。不难得出用TPS做吞吐量的标准是不科学的。但是,从业务服务的角度出发,用户往往只有单一和较少的需求场景,有时候会把事务处理能力作为吞吐量标准,作为服务协议,SLA标准。比如一个运输队只有万吨轮,没有小船。运输队和港口制定服务协议就会以保障最大吞吐量5艘每天次为准。但并不代表这个港口只支持10万吨的吞吐量。在网站应用服务的SLA中,也可以用事务的处理能力为标准。比如,服务器每秒可以支持的登录人次。


      在开发和性能测试过程中,通常关注与吞吐量(throughput)相关的两个指标,一个是TPS, KiloBytes/Sec。TPS是以应用服务的性能容量指标。 二是对性能容量的以数据处理能力的衡量。第二种衡量方式特别适用于在设计应用产品前,对服务器容量的度量。产出的throughput可做为在设计应用产品的参考。

猜你喜欢

转载自chenwei6111.iteye.com/blog/1815752