本文共 14602 字,大约阅读时间需要 48 分钟。
观察如何在 IBM® DB2® for Linux®、UNIX® 和 Windows® 基准测试环境中使用 Rational® Performance Tester 作为性能测试工具。了解要使用的最佳实践和一般经验法则。Trade6 基准应用程序被用作示例工作负载。
性能工程是确定并报告软件解决方案当前性能的一门学科。它涉及模仿大量并发用户、收集诊断数据、绘图、进行性能分析和设计 System Under Test (SUT) 的技术改进。在达到性能目标之前,此过程将一直重复。在典型的 DB2 WebSphere® 拓扑中,SUT 中有十台以上的机器(否则会有上百台)是很常见的。因此,测试循环通常十分单调乏味并且容易出错。
Rational Performance Tester 是 IBM 旨在简化性能工程的性能测试和监控策略的基础。本文将介绍使用 IBM 测试解决方案在 WebSphere 集群环境中测试 DB2 的最佳实践。
本文的主要目标是:
以下是在测试环境中使用的机器、它们的作用、使用的硬件和安装的软件的清单。
机器 | 硬件 | 软件 |
---|---|---|
数据库 | 4x1.45 GHzPower416 GB RAM |
|
RPT AgentController (x2) | 8x2 GHzIntel XEON4 GB RAM |
|
HTTP Server /WebSphereDeploymentManager | 2x2 GHzAMD Opteron4GB RAM |
|
WebSphereApplicationServer (x7) | 2x2 GHzAMD Opteron2 GB RAM |
|
RPTWorkbench | 4x2.8 GHzIntel XEON4 GB RAM |
|
性能工程是确定并报告软件解决方案的当前性能的一门学科。它涉及设置 System Under Test (SUT)、模仿大量并发用户、管理 SUT、收集诊断数据、分析收集的数据和设计 SUT 的性能改进。在达到性能目标之前,此过程将一直重复。
Rational Performance Tester 是 IBM 旨在简化性能工程的性能测试和监控的策略。在下面的小节中,将查看 RPT 如何通过模拟用户负载获得要绘制的结果图形,从而简化性能测试周期。
首先设计测试环境的拓扑结构非常重要。典型的由 RPT 驱动的集群式 Trade6 测试环境由数据库、 HTTP 服务器、WebSphere 部署管理器、WebSphere 应用服务器、驱动程序和 RPT 工作台组成。我们的测试环境的拓扑如下所示:
最佳实践:分隔 RPT 工作台和驱动程序机器RPT 工作台应该安装在不同于工作负载驱动程序机器的单独机器上,以减少驱动程序方面的开销
最佳实践:分隔驱动程序机器和 Trade 集群驱动程序的开销很高,应该与 Trade 集群分隔开来。如果驱动程序位于运行 Trade 服务器的机器上,那么集群的资源会出现负载失衡,如果使用的是简单的循环负载平衡方案,那么这可能导致性能问题。
经验法则:CPU / 网络宽带比有许多因素影响着测试环境中每个组件对另一个组件的伸缩。例如,如果工作负载非常依赖于数据库,那么您可以期望获得高比率的数据库与 WebSphere CPU 比。对于我们的测试环境,我们发现以下比率在机器之间的平衡资源利用方面非常合适:
要在 DB2 和 WebSphere 平台上设置 Trade6 基准,并创建和填充数据库,请参考 “使用 DB2 UDB 设置并运行 Trade6 基准” 一文(请参阅 )。
在下面几个小节中,将介绍如何使用 Rational Performance Tester 作为工作负载驱动程序,并了解一些用户可用的监控工具。使用 IBM Rational Performance Tester 作为工作负载驱动程序可以简化并自动化运行性能测试的过程。RPT 为用户提供了用来创建并运行不同类型的性能测试的框架,并提供了简化收集过程和分析性能度量过程的内置工具。
例如,RPT 中的 HTTP 协议允许用户记录、编辑和执行测量度量的 HTTP 性能测试,这些度量指标包括页面命中(page hit)、页面吞吐量和页面响应时间。
RPT 还为诸如 IBM Tivoli Monitoring、Windows Performance Monitor 和 rstatd 之类的资源监控工具提供支持,可以使用这些工具监控测试环境中所有机器上的资源。IBM Tivoli Monitoring 提供了用来进一步具体监控应用程序和数据库的可选组件。例如,Tivoli Monitoring for Databases 允许用户监控 DB2 数据库内部的多种度量指标,比如数据库快照、表空间和缓冲池。
该工作台可以充当用户配置、启动和监控性能测试的界面。在运行性能测试时,此工作台将部署 RPT 执行代码来确定目标部署机器,并使用 RPT 代理控制器执行它们。
安装 RPT 工作台
如果想和许多用户一起运行测试,那么必须获得 RPT 的许可密钥。可以使用包含许可密钥的许可服务器或使用许可文件获得许可密钥。要指向 Rational 许可服务器或导入许可文件,则应该运行 IBM Rational License Key Administrator(在 All Programs -> Rational Software 中可找到)。工作台使用的所有代理控制器都可以自动使用工作台使用的许可密钥。
最佳实践:增加工作台堆大小对于依赖于从代理控制器和其他监控工具传输回工作台的大量数据的比较大的测试而言,默认工作台堆大小可能不够大。如果工作台内存不足,可以通过编辑位于 RPT 主目录中的 eclipse.ini 来增加默认工作台堆大小,并更改以下代码行:
-Xms40m |
-Xmx1500m |
建议将 RPT 调度执行组件的日志级别设置为 “WARNING”,以减少系统开销。
要做到这一点,请转向 Window -> Preferences -> Logging。打开 Loggers 选项卡并将以下组件的日志级别更改为 “WARNING”:com.ibm.rational.test.common.schedule.executioncom.ibm.rational.test.lt.execution |
RPT 代理控制器
RPT 代理控制器必须安装在每台驱动程序机器上,以便为工作台提供控制它们的方法。这允许 RPT 工作台在这些机器上部署代码并执行性能测试。
安装 RPT 代理控制器
要在 Unix/Linux 上启动代理控制器,请执行 RAStart.sh:
$ /opt/IBM/SDP70Shared/AgentController/bin/RAStart.sh Starting Agent Controller RAServer started successfully |
确保代理控制器使用的是随 RPT 一起打包的 JVM(RPT70/jdk/jre/bin/java)。要检查代理控制器正在使用的是哪个 JVM,请打开 /config/serviceconfig.xml 并选择 JAVA_PATH 的值。作为好的实践,工作台使用的 Java 版本与代理控制器使用的 Java 版本应该是匹配的。
最佳实践:增加 tcpip 端口/打开文件的最大数量在包含代理控制器的每台机器上,可能都需要应用以下调优:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters |
$ ulimit -n 10050000 |
在应用调优之后,应该重启代理控制器,如下列清单所示:
$ /opt/IBM/SDP70Shared/AgentController/bin/RAStop.sh RAServer stopped, pid = 27275$ /opt/IBM/SDP70Shared/AgentController/bin/RAStart.sh Starting Agent Controller RAServer started successfully |
部署 Trade6 性能测试项目
这里提供了一个示例 RPT 性能测试项目(请参阅 )。使用性能项目中提供的脚本,可以通过模拟的工作负载驱动 Trade6 环境,该模拟负载重复地命中 Trade6 网站的 /trade/scenario servlet。
要部署这些脚本,请打开 RPT 并选择将现有项目导入工作区。浏览解压缩 TradeProject 的位置,选中它,然后选择 Copy projects into workspace。此外,还可以单击 Select archive file 直接指向压缩文件。图 3 显示了这些步骤:
单击 Finish,让 RPT 将此项目复制到工作区中。现在,工作区中应该有一个包含两个 Trade6 测试脚本的性能测试项目:
必须对这些脚本进行以下更改,以便将它们用于您的环境:
通过性能调度中的 Problem Determination 选项卡启用问题确定,这允许代理控制器为调试过程生成日志。对于实际的性能运行,应该将问题确定日志级别调整为 “None”,以减少代理控制器机器上的系统开销,或者调整为 “Severe” 并从每个用户组抽取一名用户作为样本。
最佳实践:增加代理控制器上的 JVM 堆大小对于大型性能测试,可能需要为代理控制器增加 JVM 堆。例如,如果将堆大小增加为 1500 MB,请双击代理控制器机器(在 Test Navigator 中),打开 General Properties 选项卡,然后添加命名为 RPT_VMARGS 的值为 –Xmx1500m 的新属性。对于 Windows,建议将最大堆大小设置为 1.5 GB,对于 Linux,建议将该值设置为 3 GB。
运行 Trade6 性能测试
要启动性能测试,请右键单击 TradeSchedule test -> Run As -> Performance test schedule。此外,可以在选中性能测试的同时按下 Alt+Shift+X, C 组合键。
然后工作台会将性能测试以及所需的 RPT 库部署到每台驱动程序机器并执行它们。在执行测试时,可以查看性能报告的不同页面,从而可以动态监控测试。
图 8 显示了吞吐量页面,该页面显示了与页面命中率和用户负载有关的信息:
Response vs. Time 页面显示了每个请求的平均响应时间。图 9 显示了此响应时间页面:
Rational Performance Tester 7 为三个监控工具提供了集成式支持:
建议为性能测试环境中的每台机器至少安装一种类型的监控工具。这样做可以监控所有资源并杜绝任何资源瓶颈。
要启动监控,请转向性能调度的 Resource Monitoring 选项卡,如图 10 所示:
单击 Add New 添加要监控的新机器。然后系统会提示您确定要进行监视的主机和要使用的监控工具。
最佳实践:同步系统时钟多数监控工具都基于监视器下的系统使用时间戳来收集统计数据。因此,您首先应该同步正被监控的所有系统中的系统时钟。
在 Linux 和 AIX 系统上,可以键入以下内容(作为根用户)来实现这一点:
$ ntpdate -u speedo1 12 Apr 13:52:06 ntpdate[21596]: step time server 9.26.54.6 offset 8.096963 sec |
Windows Performance Monitor
默认情况下,所有 Windows 机器上都安装了 Windows Performance Monitor,可以使用它来监控各种系统资源。
rstatd
rstatd 工具用于从 Linux 和 Unix 操作系统中收集一些基本监控数据。这些数据包括:
安装 rstatd
大多数 Unix 系统上都预先安装了 rstatd。要启动 rstatd 守护程序,请键入:
$ rpc.rstatd |
对于 Linux 操作系统,可以在以下位置找到 rstatd 的开源版本:http://rstatd.sourceforge.net/。 要安装 rstatd,请键入以下内容:
$ tar xvf rpc.rstatd-4.0.1.tar$ cd rpc.rstatd-4.0.1/$ ./configure$ make$ make install |
之后,请键入下列内容启动它:
$ rpc.rstatd |
要使用 rstatd 监控 RPT 中的资源,请打开性能测试的 Resource Monitoring 选项卡,选择使用 UNIX rstatd 监视器,然后选择要收集的计数器。图 11 显示了这些步骤:
要查看运作中的监控情况,请在运行测试的时候打开性能报告的 Resources 选项卡。您可以看到如下所示的图表,上面绘制了数据库机器上的 Idle、System、IOWait 和 User CPU 时间:
IBM Tivoli Performance Monitoring
IBM Tivoli Monitoring 为监视器提供了更丰富的度量指标集,可以使用它们从测试环境中收集 rstatd 没有收集的额外的性能度量指标。可以安装不同类型的 ITM 监控代理,比如 Tivoli OS Monitoring、Tivoli Monitoring for Databases 或 Tivoli Monitoring for Applications,提供进一步的深层资源监控。
安装 IBM Tivoli Performance Monitoring
在安装 Tivoli Monitoring 之前,应该选择一台机器充当监控服务器。对于我们的测试环境,我们选择使用数据库机器。
要在 Unix/Linux 上安装监控服务器,请执行以下步骤:$ /home/adm22237/ITM/bin/itmcmd server start MORTAL_HUB Starting TEMS... TEMS started... |
接下来应该将每台机器上的监控代理安装到监视器上。Tivoli OS 监控代理以及包含 Tivoli 监控服务器安装的大多数安装包都已包括在内。其他监控代理,比如 Tivoli Monitoring for Databases 或 Tivoli Monitoring for Applications,可能需要单独下载。
要在 Unix/Linux 上安装监控代理,请执行以下步骤:$ /home/adm22237/ITM/bin/itmcmd config -A ux Agent configuration started... Will this agent connect to a TEMS? [YES or NO] (Default is: YES): TEMS Host Name (Default is: mortal): mortal Network Protocol [ip, sna, ip.pipe or ip.spipe] (Default is: ip.pipe): Now choose the next protocol from one of these: - ip - sna - ip.spipe - none Network Protocol 2 (Default is: none): IP.PIPE Port Number (Default is: 1918): Enter name of KDC_PARTITION (Default is: null): Configure connection for a secondary TEMS? [YES or NO] (Default is: NO): Enter Optional Primary Network Name or "none" (Default is: none): Are you installing this product into a clustered environment(Default is: NO): Agent configuration completed... |
应该使用您的代理 ID 替换其中的 ux。此 ID 基于代理类型和 OS,并且是惟一的。要查找代理 ID,可以使用 cinfo 命令:
$ /home/adm22237/ITM/bin/cinfo –I *********** Thu Apr 12 10:25:41 EDT 2007 ****************** User : mikezliu Group: build pdxdb2 Host name : mortal Installer Lvl: 610 / 100 CandleHome: /home/adm22237/ITM *********************************************************** ...Product inventory a4 Monitoring Agent for i5/OS tms Version: 06.10.02.00 ax IBM Tivoli Monitoring Shared Libraries aix513 Version: 06.10.02.00 aix516 Version: 06.10.02.00 jr Tivoli Enterprise-supplied JRE aix513 Version: 400 Rel: 100 aix516 Version: 400 Rel: 100 lz Monitoring Agent for Linux OS tms Version: 06.10.00.00 ms Tivoli Enterprise Monitoring Server aix513 Version: 06.10.02.00 nt Monitoring Agent for Windows OS tms Version: 06.10.02.00 sh Tivoli Enterprise Monitoring SOAP Server aix513 Version: 06.10.02.00 sy Summarization and Pruning Agent tms Version: 06.10.02.00 tm Monitoring Agent for IBM Tivoli Monitoring 5.x Endpoint tms Version: 06.10.02.00 ud Monitoring Agent for DB2 aix516 Version: 06.10.00.00 tms Version: 06.10.00.00 ui Tivoli Enterprise Services User Interface aix513 Version: 06.10.02.00 aix516 Version: 06.10.02.00 ul Monitoring Agent for UNIX Logs tms Version: 06.10.02.00 um Universal Agent tms Version: 06.10.02.00 ux Monitoring Agent for UNIX OS aix516 Version: 06.10.02.00 tms Version: 06.10.02.00 |
按照指令,在提示的时候输入 Tivoli 监控服务器的主机名。
根据安装的监控代理的类型,可能需要将该代理的支持安装到监控服务器上。对于我们的集群,我们为 Unix/Linux 上的 DB2 的监控代理添加了支持,该支持将添加到监控服务器中,如下所示:$ /home/adm22237/ITM/bin/itmcmd server stop MORTAL_HUB Stopping TEMS... TEMS stopped... |
$ /home/adm22237/ITM/bin/itmcmd server start MORTAL_HUB Starting TEMS... TEMS started... |
$ /home/adm22237/ITM/bin/itmcmd support -t MORTAL_HUB ud Copying cat and attr data... Product support installation started... Product support installation completed... |
还应该将以下补丁应用于 Tivoli Monitoring Server 和 Tivoli Monitoring Agent,以增加对 DB2 V9 的支持:
DB2 6.1.0-TIV-ITM_DB2-LA0053 Agent Support Install (6.1.0-TIV-ITM_DB2-LA0053.tar)要启动代理,请使用 itmcmd 命令。根据想要启动的代理类型,可能需要传入额外的选项。例如,要启动 Tivoli OS 监控代理,可以键入以下内容:$ /home/adm22237/ITM/bin/itmcmd agent start ux Starting agent... Agent Started... |
要启动用于 DB2 的 Tivoli 监控代理,则应该按照以下这些步骤操作:
$ db2 connect to trade6db Database Connection Information Database server = DB2/AIX64 9.1.2 SQL authorization ID = MIKEZLIU Local database alias = TRADE6DB $ /home/adm22237/ITM/bin/itmcmd agent -o mikezliu start ud Starting agent... Agent Started... |
要使用 Tivoli 监控 RPT 中的资源,请打开性能测试的 Resource Monitoring 选项卡,选择使用 IBM Tivoli Monitoring,然后指定监控服务器的主机名:
这之后,可以使用 Resource 选项卡选择要收集的计数器。
在运行测试的同时打开性能报告的 Resource 选项卡,这样可以查看运作中的监控情况。图 15 举例说明了这些步骤:
通过右键单击该图,可以用不同的方式对其进行自定义,比如添加和移除计数器。例如,如果只想查看缓冲池命中率,那么可以右键单击该图 -> Add/Remove Performance Counters -> Resource Monitoring Counter 并只选择池命中率计数器。然后此图将更新为只绘制该计数器:
规划测试环境拓扑
RPT 工作台和驱动程序机器:RPT 工作台应该安装在不同于工作负载驱动程序的单独机器上
驱动程序机器:驱动程序的系统开销很高,应该独立于测试下的系统。
RPT 工作台
工作台堆大小:对于较大的测试,应该增加默认工作台堆大小
日志级别:对于实际性能运行,不应该将 RPT 调度执行组件的日志级别设置为 “WARNING” 以上
代理控制器
代理控制器的 JVM:代理控制器应该使用与 RPT 打包在一起的 JVM
Linux/UNIX 上的打开文件的最大数量:增加允许打开文件的最大数量
Windows 上的 tcpip 端口的最大数量:增加允许的 tcpip 端口的最大数量
运行 RPT 性能测试
问题确定:在性能运行期间,应该将问题确定日志级别调整为 “None”,或者调整为 “Severe” 并从每个用户组中抽取一名用户作为样本。
代理控制器上的 JVM 堆栈的堆大小:对于大型测试,需要增加代理控制器上启动的 JVM 堆栈的堆大小
资源监控
系统时钟:测试环境下的系统中的所有机器都应该有彼此同步的系统时间,以便资源监控使用正确时间戳
本文描述了如何使用 IBM Rational Performance Tester 作为 DB2 环境中的性能测试和监控工具。RPT 提供了帮助用户执行性能测试的多种工具,从对监控工具的内置支持,到允许用户编写和执行他们自己的工作负载驱动程序脚本。使用 RPT 作为端到端性能测试工具可以极大提高生产率,简化性能测试过程以及从 DB2 测试环境中收集性能度量的过程。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-406670/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14789789/viewspace-406670/