技术开发 频道

采用铺底数据测试SOA性能更真实

  性能测试环境准备

  在本文中,我们采用的测试环境是:用IBM WebSphere Process Sever 集群做应用服务器,用IBM DB2 做数据库,用Rational Performance Tester 7.0 做性能测试工具,用IBM HTTP Server 做 HTTP Server。

  一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。在大多数模式下,集群中所有的计算机都拥有一个共同的名称,集群内任意系统上运行的服务可被所有的网络客户所使用。Cluster 必须可以协调管理各分离组件的错误和失败,并可透明地向 Cluster 中加入组件。

  一个 Cluster 包含多台(至少两台)拥有共享数据存储空间的服务器。任何一台服务器运行一个应用时,应用数据被存储在共享的数据空间内。每台服务器的操作系统和应用程序文件存储在其各自的本地储存空间上。Cluster 内各节点服务器通过内部局域网相互通信。当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。当一个应用服务发生故障时,应用服务将被重新启动或被另一台服务器接管。当以上的任一故障发生时,客户都将能很快连接到新的应用服务上。

  利用集群我们可以解决 JVM 紧张的问题,可以分摊 I/O 的负载量,还可以有效地降低系统的故障率。假如一台 Server 的稳定性是 99%,那么系统宕机的几率就是 0.01。如果我们两个 Server 在一起的集群环境的不稳定性将降低到 0.0001,也就是有两个 Server 的集群环境的稳定性可提高到0.9999。这样我们就可以根据实际生产环境的要求来降低系统的风险性。

  本测试环境中我们就采用了 WPS 集群(WPS Cluster)。Cluster(集群)是多个 WPS 的集群,它可以集中管理所有 WPS,并参与管理所有 WPS 的负载。WPS 6.0.1 及以上版本支持搭建 Cluster,可以做到负载均衡(Workload Balance)和高可用性(High Availability),从而使 WPS 更加稳定,性能更为卓越。况且,在一般的真实生产环境中,WPS 集群也是经常要被用到的。本测试环境 的拓扑结构。

  Cluster 分两种,水平 Cluster 和垂直 Cluster。水平 Cluster 的成员在不同物理机器上,垂直Cluster 的成员在同一台物理机器上。

  在这里由于测试环境的限制,我们采用的是竖直 Cluster,有三个 Cluster 成员。其中有 Deployment Manager 类型的 Profile,它可以管理整个单元内部所有的 WPS。Deployment Manager 通过和 Node Agent 的交互信息来管理节点。而 Node Agent 用来管理三个 Cluster 成员。我们还需要在 WPS Cluster 和应用中间加入一个 HTTP Server,使应用通过 HTTP 协议访问 WPS Cluster 的时候随机地分摊到不同的 Cluster 上面。

  在理想的情况下,性能测试的环境最好能够完全模拟真实应用部署的环境,以便于通过性能测试得到应用在真实生产环境下的性能结果。然而,由于真实应用部署环境的规模比较大,上述思路是不实际的。因此,为了能够得到更具真实性的性能结果以及更好地发现应用存在的性能问题,我们在测试中采用可控制的测试环境来尽量模拟真实环境,其中也包括对历史数据的准备。在我们的测试环境中,为了更好地分析数据库和应用本身的性能问题,如 I/O 问题,将 WPS 和数据库将分别安装在不同的物理机上。

  首先通过 HTTP 请求到 HTTP Server ,再进入 UI 层,然后通过 UI 调用 Web Service,Web Servive 再通过 HTTP Server 调用 BPEL 和 WSDL 文件,再通过 JDBC 连接 Database,并用 Content Manager 存入一些文件(如 PDF、Word)到 Database 上。

  用 IBM HTTP Server 做 HTTP Server,并在WebSphere Application Server 上搭建 UI 层,将 BPEL WSDL 搭建到 WebSphere Process Server 上,然后用 DB2 做 Database。现在,我们所需要的整个测试环境就基本搭建完成了。

  分析测试结果

  通过分别对没有铺底数据和有铺底数据的情况进行相同的性能测试,我们发现测试结果有很大的区别,主要表现在页面平均响应时间方面。

  经过测试,在没有铺底数据的情况下,页面平均响应时间是 58.552ms;而在有铺底数据的情况下,则是 608.344ms。从Rational Performance Tester 生成的测试报告中,我们可以清楚地看到每个页面的平均响应时间。

  从两类页面平均响应时间的对比,可以看出在有铺底数据的情况下,平均响应时间高于没有铺底数据的测试结果。经过查找问题根源,发现在这两个页面中,由于在数据库中进行了大量视图的创建和 Select 语句的操作,导致了响应时间比较长。

  因此,从上述比较结果中我们可以看出,在有铺底数据的情况下进行性能测试,能够帮助测试人员更好地发现被测应用系统存在的问题。

  另外,一般应用在真实情况下的生产系统中运行时,都会存在大量的历史数据。因此,我们在测试时就需要加入铺底数据,这样不仅能够得到更加真实的测试结果,而且能够及早发现应用系统中存在的隐患,从而避免在系统正式运行后才发现问题给后续工作带来很大麻烦。

  通过一个进行实际性能测试的样例,通过对基于 WebSphere Process Sever 的应用程序性能的测试,通过对有铺底数据和没有铺底数据两种情况的测试结果所进行的对比与分析,我们发现,使用铺底数据进行性能测试不仅可以帮助测试人员更好地发现应用系统存在的问题,同时也能够使测试结果更加接近真实生产环境下的结果。

0
相关文章