扩展能力的性能指标

可变负载下应用服务器性能的一般测试方法,不能提供一个普遍的度量,但它提供了应用服务器可靠性的一个近似值。定量的可扩展性测量包含一些假定的设置。想取得测试结果必须小心的查证这些假定的设置。

可扩展性的测量中包括应用服务器性能测量,应用服务器执行具有代表性的Web 应用程序,同时具有可变的用户负载和硬件配置。应用服务器性能是由用户开始访问到接收到正确的应答所用的时间来决定的。应用服务器性能受到许多因素的影响,在评估性能值时必须考虑到这些因素。

  • 外部因素—硬件、操作系统配置、软件、网络速率、数据库应答时间和应用代码 的效率。

  • 数据库设计和性能—Web应用的主要性能瓶颈是其下层数据库的效率。数据库表现的好(或坏)能大大的影响测试结果。

  • 应用程序代码—应用程序有多种实现方式,其中一些方式比另一些具有较高的可 扩展性。

  • 明确的应用程序需求---每个应用程序拥有不同的优先级。对于一个电子商务应用

而言,有时性能远不如界面重要,有些则相反。

  • 实际用户负载—要模拟实际的用户负载情况是很因难的,例如,在一个电子商务 的应用中,许多用户只是浏览而不购买,另一些用户则只购买而不浏览。想为每 个应用判断负载情况是极其因难的。

  • 测试产品—从测试环境中取得的一般性测试结果能够评估可扩展性趋势,但实际

上,我们很难找到合适的测试工具。Segue, Mercury Interactive和RSW为企业提供测试产品。

从测试环境中取得的性能值提供了有价值的趋势信息,但这个信息值不能脱离环境来考虑。上面提到的各种因素应根据不同环境下的统计数据来审慎对待。

理解性能测试

性能测试产品对Web应用的性能进行定量的检测。在Web应用中,人们最感兴趣的是 应答时间的测试。它是从用户输入URL、按下Submit键或点击一个链接开始到正确的页面应答返回所有的时间。这个过程可以是一个简单页面的调用或一个连继的页面处理过程。

应答时间是服务器性能测量的一个重要部分,当同时访问的用户会话增加时,服务器负载和应答时间也相应的增加。服务器处理一个用户的请求比同时处理多个用户的请求要快得多。

在硬件不变的情况下,当用户会话的增加和应答时间的增长成线型关系时,可认为

这个应用是可扩展的。举一个简单的例子,当两个请求同时发生时,服务器应答时间是仅有一个请求时应答时间的两倍。注意这儿的线型是指接近线型的关系,它们不可能形成一个直线关系。越接近线型则应用的扩展性越高。

扩展能力的性能指标 - 图1

在左边的图表中,负载增加时服务器应答时间也相应增长。当应答时间随负载增加而增加时,它们成一种均衡的线性关系。

右过的图表显示当用户请求达到极限时,应答时间迅速加大。服务器到达扩展性极限,没有足的资源去有效的处理新的请求。当服务器资源不足时,具有扩展性的服务器性能开始逐渐降低,而不是忽然落下。

应答时间和负载的关系越接近直线,应用服务器的扩展能力就越强。

测试方法

单处理器上典型配置的ColdFusion服务器运行采样程序。应用程序所使用的数据从另一台运行SQL Server的主机上取得,并将处理完的数据重新存入该SQL Server。SQL Server主机同时提供DISA (Distributed Internet Server Array)服务来共享应用程序中的文件。1

测试开始可在拥有不同用户级别的单机上进行,然后可在集群环境下进行两台、三台、六台、九台和十台服务器测试。

电子商业中每个用户会话有三个处理步骤(依次是从数据库读取购物信息、购买过程中进行的浮点运算、购买提交后写数据库)。分别模拟1, 50, 100, 200和500个同时发出HTTP请求。模拟的范围从每天1,000,000 hits到每天30,000,000 hits。2

这种重压测试可多进行几遍以获得精确的测量值。

什么是同时发生的用户会话?

在实际的Web应用中,大部分的会话时间都用来等待用户的响应,当用户暂停后, 重新进行应答是很困难的。

一些大的站点和应用常常在同一时间存在数百个用户会话,但只有较少的一部分向应用服务器申请页面和处理,剩下的会话都在等待用户的响应。

为了完成我们的测试,我们忽略了那些暂停用户。这意味着,当我们模拟出50个用

户会话时,它所表现的性能可以大致代表那些有大量用户会话的应用的性能。我们作的500个模拟用户会话测式可代表实际应用中10,000个网络会话。被激活会话和已存在会话的精确比例很难测出,它随应用不同而不同。

1 DISA 使用一个文件仓库管理所有的应用模板,而不是将应用文件分布到不同的主机

中去。通过配置,数据库服务器和文件服务器可位于不同的主机上。这有可能引起性能降低,并引发单点故障,为解决这个问题,系统为 SQL 和 DISA 服务器都加入故障处理功能。

2注:hits并不是页面,页面由一个或多个hits组成,在Web上,平均每个页面有13 个hits。

3使用每页的平均响应时间而不是3页累计的时间来提供不同类型事务页面的典型采

样。

ColdFusion 应答时间

扩展能力的性能指标 - 图2

服务器应答时间随着同时用户会话数的增加而成比例的变长,两者成线型关系。在集群服务器中进行测试也可得出相同的结论。

测试应用中包括三个页面,每个页面含有不同的操作。测试结果取三个应答时间的平均值,以避免由于单一操作而导致的误差。在X轴列出的用户会话值中并不包括暂停用户。4 在我们测试中的一个用户会话相当于实际运行中的十个用户会话。

使用集群服务器

服务器集群是指一组服务器对外象一个服务器似的共同运行一个应用。集群服务的最大好处是可以进行负载均衡和故障处理。

负载均衡允许用户请求被集群中的某一台主机接受,该主机能为用户提供最快的处理速度。整个负载被均匀分布到集群中各个服务器上,集群处理能为用户提供最小的应答时间。5

故障处理允许集群自动补偿其中一台主机故障而造成的损耗。ColdFusion企业版包

括一个集群软件ClusterCATS 。集群中的主机相互保持恒定的连接,当其中一台发生故障后,另一台主机会立即查觉,自动继承故障主机的身份,继续它正在处理的各种请求。

4 Segue, 测试工具制造者,称没有中断用户的测试为“重压测试”

5 负载均衡可在两种配置下运行:有sticky sessions 或没有sticky sessions。sticky sessions允许每加入一个会话,负载均衡就执行一次,而不是对应每个请求执行一次。虽然sticky sessions包括较少的分布式负载,但它允许应用程序使用服务器端的Session变

量。

Web服务器集群由以下几部分组成:

  • 两个以上运行Web服务器软件的服务器主机

  • 共享数据文件的机制—共享数据仓库或数据复制机制

  • 用来处理请求并将它们分配到集群服务器中去的集群处理软件或硬件。

扩展能力的性能指标 - 图3

这个图表描述了在集群环境下从一台服务器到十台服务器,同时连接的用户会话分别为 1, 50, 100, 200 和 500 时所用的平均应答时间。6 当逐渐加入额外的服务器时, 它所提供的额外服务能力逐渐减少,这是因为要使用额外的开销去处理集群服务器同步。尽管如此,加入一个新的服务器仍会改进系统性能。

扩展能力的性能指标 - 图4

6只测试了配置1, 2, 3, 6, 9和10台服务器时的情况,4, 5, 7和8的值是由测得的值推算出来的。