采用铺底数据进行 SOA 应用的性能测试(3)
3. 结合铺底数据基于 WPS Cluster 服务器的性能测试试验
在本文中,准备采用这样的测试环境:IBM WebSphere Process Sever 集群做应用服务器,IBMdb2做数据库,Rational Performance Tester 7.0 做性能测试工具,IBM HTTPserver做 HTTPserver。
3.1.1 什么是 WPS Cluste 及其作用 , 以及 WPS Cluster 的搭建
- Cluster 集群:
一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。大多数模式下,集群中所有的计算机拥有一个共同的名称,集群内任意系统上运行的服务可被所有的网络客户所使用。Cluster 必须可以协调管理各分离的组件的错误和失败,并可透明地向 Cluster 中加入组件。一个 Cluster 包含多台(至少二台)拥有共享数据存储空间的服务器。任何一台服务器运行一个应用时,应用数据被存储在共享的数据空间内。每台服务器的操作系统和应用程序文件存储在其各自的本地储存空间上。Cluster 内各节点服务器通过内部局域网相互通讯。当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。当一个应用服务发生故障时,应用服务将被重新启动或被另一台服务器接管。当以上的任一故障发生时,客户都将能很快连接到新的应用服务上。
WPS 的集群就是基于 WPS 服务器建立的集群。
- Cluster 集群的作用:
利用集群我们可以增大 JVM 紧张的问题,可以分摊 I/O 的负载量,还可以把系统的故障率成万倍的降低。假如一台server的稳定性是 0.99,那么系统 DOWN 掉的几率就是 0.01,那么如果我们两个server在一起的集群环境的不稳定性将降低到 0.00001,也就是有两个server的集群环境的稳定性提高到 0.9999。这样我们就可以根据实际生产环境的要求来降低系统的风险性。
- WPS Cluster 集群的搭建:
本测试环境中我们就采用了 WPS 集群(WPS Cluster)。Cluster(集群)是多个 WPS 的集群,它可以集中管理所有 WPS,并参与管理所有 WPS 的负载。WPS 6.0.1 及以上版本支持搭建 Cluster。这样可以做到负载均衡(Workload Balance)和高可用性(High Availability),从而使得 WPS 更加稳定,性能更为优秀。况且在一般的真实生产环境中,WPS 集群也是经常要使用到的。
以下是本测试环境中 WPS Cluster 的拓扑图:
ITPUB个人空间 Zv4i,Gv图 6. WPS Cluster 的拓扑图ITPUB个人空间p r%bCh+L {$N,\D1h
ITPUB个人空间8oaVU0[)wO|:o2\Cluster 分为两种,水平 Cluster 和竖直 Cluster。水平 Cluster 的成员在不同物理机器上,竖直 Cluster 的成员在同一台物理机器上。在这里由于测试环境的限制,我们采用的是竖直 Cluster,有三个 Cluster 成员。Cluster 中有一个 Deployment Manager 类型 profile,它可以管理整个单元内部所有的 WPS。Deployment Manager 通过和 Node Agent 交互信息来管理节点。而 Node Agent 用来管理三个 Cluster 成员。我们还需要在 WPS Cluster 和应用中间加入一个 HTTPserver,使得应用通过 HTTP 协议访问 WPS Cluster 的时候随机的分摊到不同的 Cluster 上面。
3.1.2 性能测试环境的准备
在理想的情况下,性能测试的环境最好能够完全模拟真实应用部署的环境,以便于通过性能测试得到应用在真实生产环境下的性能结果。然而由于真实应用部署环境的规模比较大,这是不实际的。因此,为了能够得到更具真实性的性能结果以及更好地发现应用存在的性能问题,我们在测试中采用可控制的测试环境来尽量模拟真实环境,其中也包括对历史数据的准备。在我们的测试环境中,为了更好地分析数据库和应用本身的性能问题,如 I/O 问题,将 WPS 和数据库将分别安装在不同的物理机上。
如下是性能测试环境的拓扑图:
ITPUB个人空间 q8r2k8A+`7YkNS图 7. 性能测试环境的拓扑图ITPUB个人空间QGKRvp6?7Fj+kr
ITPUB个人空间5CV4n F6A:G8cH0h8M首先通过 HTTP 请求到 HTTPserver,再进入 UI 层,然后通过 UI 调用 Web Service,Web Servive 再通过 HTTPserver调用一些 BPEL 和 WSDL 文件,再通过 JDBC 连接 Database,并用 Content Manager 存入一些文件(如 PDF,Word)到 Database 上。
利用ibmHTTPserver做 HTTPserver,WebSphere Applicationserver上搭建 UI 层,将 BPEL WSDL 搭建到 WebSphere Processserver上,并用db2做 Database。现在整个测试环境就基本搭建完成。
3.2 在 Rational Performance Tester 中生成测试脚本
3.2.1 Rational performance tester 介绍
在本文中用来进行性能测试的工具采用的是ibm的 Rational Performance Tester。它是用于生成用户负载的商业化的ibm产品。它作为ibm软件开发平台(software development platform,SDP 的一个插件,并且目前只支持在microsoft®windows® 操作系统和 Linux 上使用。Rational Performance Tester 包括一个ibmRational ClearCase LT 的完整功能的副本,再加上以下这些关键特性:
- 用于创建、修改,并执行工作负载的可视化测试编辑器。
- 能够同时运行多个,以及各种各样的用户模拟。
- 跨节点分配测试作业的可部署的执行代理。
- 立即的性能及吞吐量报告。
- 动态服务器响应的自动识别,及对其的支持。
- 使用数据池随机的输入。
- 服务器资源数据的集合及可视化。
- 生成在测试记录过程中被访问的 Web 页面的 HTML 视图。
- 为了灵活定制测试,可以插入 Java 代码。
用 Rational performance tester 创建一个申请案例的页面测试,并命名 Project Name 为 MAR。
ITPUB个人空间M6|N ?NF图 8. 创建一个页面测试ITPUB个人空间ov7H cf ^"_l
ITPUB个人空间N2f!I*?!gn L2G$]通过访问 Manage Application Request 的 Web 页面,执行一个完整的申请流程,来完成 Rational performance tester 的测试脚本的录制。在 Test 的内容框可以看到,录制的测试脚本共包含 11 个页面。
ITPUB个人空间a4D N8VXvYp图 9. 录制的测试脚本共包含 11 个页面ITPUB个人空间8h%b1@] ui_
ITPUB个人空间+i,i oP
W1Iy.}#v3.2.2 创建性能调度
性能调度使得你可以对测试分组,排序,以及在远端运行测试。时间计划可以简单到每一个虚拟用户运行一个测试,也可以复杂至在不同的组中有上百个虚拟用户,每一个都在不同的时间运行不同的测试。利用性能调度,你可以:
- 对测试分组来仿真不同用户操作。
- 设置测试运行次序:顺序地,随机地,或按照所带权值的次序。
- 设置每个测试运行次数。
- 依照一定的速率运行测试。
- 在远端运行一个或多个测试。
这里创建一个名为 schedule 性能调度,由于这次测试都是在本机执行,并且都执行同一个测试脚本,所以创建一个 User Group,其中包含并发用户 5 个。为保证用户的真正并发性,注意要将每个 user 之间的 delay time 设置为 0 Sec,think time 也设置为 0 Sec。测试执行次数设为 10 次。
ITPUB个人空间'M||1`,cS图 10. 创建一个名为 schedule 性能调度
CU3@4r:@0

Z"N|.X;sT8R!hr0
性能调度设置完成后,执行性能调度。
$ax(T9LZ0图 11. 执行性能调度ITPUB个人空间5w!?GHx~[

SL'c}9fpDX\0
首次执行的测试是在数据库为空的情况下进行的,然后按照本文第二部分介绍的方法,向数据库中插入铺底数据。插入铺底数据后,同样的方法,再次执行一遍 schedule 性能调度,与之前执行的结果进行比较。
通过分别对没有铺底数据和有铺底数据的情况进行相同的性能测试,会发现测试结果有很大的区别,主要表现在页面平均响应时间。经过测试,在没有铺底数据的情况下,平均页面响应时间是 58.552 ms,而在有铺底数据的情况下,平均页面响应时间是 608.344 ms,具体从 Rational Performance Tester 生成的测试报告中可以清楚地看到每个页面的平均响应时间。
3.3.1 没有铺底数据的测试结果
Z9}+X_p j0图 12. 没有铺底数据的测试结果ITPUB个人空间D:N9Vh4UCF
ITPUB个人空间Z6Z?.o2OQ
Uk3.3.2 有铺底数据的测试结果
em%t+z(xuRA0图 13. 有铺底数据的测试结果ITPUB个人空间b%k{Xeq](? D V2t
ITPUB个人空间9T/@jJ*K m"E3.3.3 分析比较测试结果不同的原因
从上面两个页面平均响应时间图的对比,可以看出在有铺底数据的情况下,平均响应时间均高于没有铺底数据的测试结果,其中 start 和 Manage Application Request (7) 这两个页面的响应时间差距比较大,并且普遍高于其他页面。经过查找问题根源,发现这是由于在这两个页面中,在数据库中进行了大量视图创建和 select 语句的操作,从而导致响应时间比较长。
因此从上述比较可以看出,在有铺底数据的情况下进行性能测试,能够帮助测试人员更好地发现被测应用系统存在的问题。另外,一般应用在真正生产系统中运行时,都会存在大量的历史数据。这样我们在测试时就加入铺底数据,不仅能够得到更加真实的测试结果,并且能够及早发现应用系统中存在的隐患,不会在系统正式运行后才发现问题,那时已经为时已晚。
ITPUB个人空间n%Ck2B9yY yH]
|
ITPUB个人空间l)sK`R2ri&S
在本文中,介绍了什么是铺底数据、准备铺底数据的重要性,以及如何运用 Ratioanl Performance Tester 7.0 和db2的导入功能高效生成铺底数据的方法。并且提供了一个实际性能测试样例,对一个基于 WebSphere Process Sever 的应用程序的性能测试进行了详细描述,并且,对有铺底数据和没有铺底数据的两种情况的测试结果进行了分析,发现使用铺底数据进行性能测试,不仅可以帮助测试人员更好地发现应用系统存在的问题,同时也能够使测试结果更加接近真实生产环境下的结果。
导入论坛 引用链接 收藏 分享给好友 推荐到圈子 管理 举报
TAG:

