4.2.3 吞吐量和容量
除了响应时间,性能测试人员最感兴趣的就是被测系统能够同时处理多少数据和多少事务。在这些度量中,吞吐量强调对于某个事务的处理有多快,而容量则强调在某个时间段内能够处理多少事务。
图4-8说明了在整个性能测试过程中每秒的事务吞吐量。该图显示了在什么时间吞吐量达到峰值,以及在每一个点上事务吞吐量是否有明显的波动等情况。
图 4-8 事务吞吐量
事务吞吐量的突然减少一定是有问题的,可能跟虚拟用户遇到错误有关。这种情况在Web服务器层对到达的请求处理达到饱和时经常会发生。当虚拟用户在等待Web服务器的响应时会开始停滞,导致随后的事务吞吐量下降,最后用户开始出现超时和失败,不过你可能会发现一旦活动用户数减少到Web服务器能够处理的水平时事务吞吐量会再次趋于稳定(尽管吞吐量值较低)。假如你的运气实在不够好的话,Web服务器或者应用服务器将无法恢复,从而使得所有虚拟用户都将失败。
简而言之,吞吐量的降低是Web服务器层或应用服务器层达到容量极限的标志。
在图4-9中会看到基于Web服务器的性能测试中当前活动的并发用户所发出的GET、CONNECT和POST请求数量。正如图4-9所示,这些值是在测试过程中逐步增加的。任何性能指标的突然下降,尤其是伴随着虚拟用户错误的出现,都表明Web服务器存在问题。
图 4-9 当前用户和Web请求关联
当然,Web服务器并不总是问题的原因所在。我曾遇到过很多虚拟用户等待Web服务器响应超时的情况,不料最后发现问题的真正原因在于一个长时间执行的数据库查询没有给应用程序返回结果或Web服务器返回结果过大而造成了超时。这说明了对应用程序中所有服务层设置KPI监控的重要性。