简介
性能工程是确定并报告软件解决方案当前性能的一门学科。它涉及模仿大量并发用户、收集诊断数据、绘图、进行性能分析和设计 System Under Test (SUT) 的技术改进。在达到性能目标之前,此过程将一直重复。在典型的 DB2 WebSphere® 拓扑中,SUT 中有十台以上的机器(否则会有上百台)是很常见的。因此,测试循环通常十分单调乏味并且容易出错。
Rational Performance Tester 是 IBM 旨在简化性能工程的性能测试和监控策略的基础。本文将介绍使用 IBM 测试解决方案在 WebSphere 集群环境中测试 DB2 的最佳实践。
目标
本文的主要目标是:
描述在没有类似 Rational Performance Tester 的性能测试解决方案的情况下,性能测试和监控中的主要难点
描述作为 IBM 测试解决方案的 Rational Performance Tester 和 Tivoli Performance Monitoring 基础设施
了解在 DB2 WebSphere 环境中使用 Rational Performance Tester 的一些性能测试实践和经验法则
先决条件
以下是在测试环境中使用的机器、它们的作用、使用的硬件和安装的软件的清单。
表 1. 测试环境
机器 | 硬件 | 软件 |
数据库 | 4x1.45 GHz Power4 16 GB RAM | IBM DB2 Enterprise Server Edition V9.1 Fix Pack 2 s070210 for AIX 64-bit IBM Tivoli® Monitoring Server V6.1.0 Fix Pack 2 UNIX Platforms (C93SJIE.tar) + DB2 6.1.0-TIV-ITM_DB2-LA0053 Agent Support Install (6.1.0-TIV-ITM_DB2-LA0053.tar) IBM Tivoli Monitoring for UNIX V6.1.0 Fix Pack 2 (C93SJIE.tar) IBM Tivoli Monitoring for Databases V6.1.0 UNIX Platforms (C9393IE) + DB2 6.1.0-TIV-ITM_DB2-LA0053 Agent Support Install (6.1.0-TIV-ITM_DB2-LA0053.tar) |
RPT Agent Controller (x2) | 8x2 GHz Intel XEON 4 GB RAM | IBM Rational Performance Tester Agent V7.0 (C95JAML.tar, C967UML.tar) IBM Tivoli Monitoring for Linux V6.1.0 Fix Pack 2 (C93SRIE.tar) |
HTTP Server / WebSphere Deployment Manager | 2x2 GHz AMD Opteron 4GB RAM | IBM WebSphere HTTP Server V6.1 (C88STML.tar) IBM Edge Components V6.1 for Linux on x86-64, 64-bit support (C88XKML.tar) IBM WebSphere Deployment Manager V6.1 (C88STML.tar) |
WebSphere Application Server (x7) | 2x2 GHz AMD Opteron 2 GB RAM | IBM WebSphere Application Server Network Deployment V6.1 (C88STML.tar) |
RPT Workbench | 4x2.8 GHz Intel XEON 4 GB RAM | IBM Rational Performance Tester V7.0 (C95J7ML.tar, C95J8ML.tar, C95J9ML.tar) |
未使用 RPT 的性能工程
性能工程是确定并报告软件解决方案的当前性能的一门学科。它涉及设置 System Under Test (SUT)、模仿大量并发用户、管理 SUT、收集诊断数据、分析收集的数据和设计 SUT 的性能改进。在达到性能目标之前,此过程将一直重复。
设置测试环境。测试环境必须能够模拟生产环境。随后收集的度量单位要尽可能地与开发出来的模型一样精确。该度量单位可能像单节点 WebSphere Community Edition with DB2 Express-C 一样简单,或者可能是 WebSphere Application Server Extended Deployment Edition on DB2 9 的 16 节点集群。
模拟用户负载。实际的用户负载要处理消费者行为分析和有效的线程实现。好的工作负载模拟器需要实现随机功能。而针对企业性能测试的出色工作负载模拟器则需要处理上千个线程和/或进程,并且必须具备良好的可伸缩性。
管理 System Under Test。在进行每次尝试时,SUT 都必须处于相同状态,以便产生可重复的结果。为实现这一目的,您应该重复利用 WebSphere 和 DB2 的集群、清除不同目录中的日志文件并存储 DB2 表空间。为了产生可重复的结果而始终如一地执行所有这些操作是一个好的实践。
收集每台机器上的诊断数据。至少应该具有 vmstat、iostat 和定期的 DB2 快照。必须在适当的时间使用适当的命令启动诊断工具。为了实现进一步的分析,必须系统地整理输出。为此,人们常常编写一些自定义脚本。
处理数字和绘图。这包括大量的复制粘贴处理和电子表格处理。复杂度适中的系统在绘图和分析方面涉及的诊断数据将超过 100 份。专有的图形解决方案常常集成到自定义脚本中,以便将数据后处理(post-process)为人类可使用的形式。
重复 N 次!执行性能测试的目的是发现性能瓶颈并进行性能改进。经过多少次尝试才能通过用户验收测试呢?根据我们的经验,一个版本可能要经过 100 次以上的尝试。
Rational Performance Tester 是 IBM 旨在简化性能工程的性能测试和监控的策略。在下面的小节中,将查看 RPT 如何通过模拟用户负载获得要绘制的结果图形,从而简化性能测试周期。
拓扑
首先设计测试环境的拓扑结构非常重要。典型的由 RPT 驱动的集群式 Trade6 测试环境由数据库、 HTTP 服务器、WebSphere 部署管理器、WebSphere 应用服务器、驱动程序和 RPT 工作台组成。我们的测试环境的拓扑如下所示:
图 1. 测试环境拓扑
最佳实践:分隔 RPT 工作台和驱动程序机器
RPT 工作台应该安装在不同于工作负载驱动程序机器的单独机器上,以减少驱动程序方面的开销
最佳实践:分隔驱动程序机器和 Trade 集群
驱动程序的开销很高,应该与 Trade 集群分隔开来。如果驱动程序位于运行 Trade 服务器的机器上,那么集群的资源会出现负载失衡,如果使用的是简单的循环负载平衡方案,那么这可能导致性能问题。
经验法则:CPU / 网络宽带比
有许多因素影响着测试环境中每个组件对另一个组件的伸缩。例如,如果工作负载非常依赖于数据库,那么您可以期望获得高比率的数据库与 WebSphere CPU 比。对于我们的测试环境,我们发现以下比率在机器之间的平衡资源利用方面非常合适:
总 Driver CPU : 总 DB2 CPU
4 : 1
总 HTTP Server CPU : 总 DB2 CPU
1 : 10
总 WAS CPU : 总 DB2 CPU
2 : 1 (对于 EJB 应用程序是 4 : 1)
Network for Drivers : 总 DB2 CPU
当数据库机器上有 4 个以下的 CPU 时,建议使用 100 Mb 的网络,对于超过 4 个 CPU 的机器,建议使用 1GB 的网络
设置 Trade6 环境
要在 DB2 和 WebSphere 平台上设置 Trade6 基准,并创建和填充数据库,请参考 “使用 DB2 UDB 设置并运行 Trade6 基准” 一文(请参阅 参考资料)。
在下面几个小节中,将介绍如何使用 Rational Performance Tester 作为工作负载驱动程序,并了解一些用户可用的监控工具。
使用 RPT 作为工作负载驱动程序
使用 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 工作台
下载 RPT 7 安装包并运行 launchpad.exe 启动安装向导。
图 2. 安装 IBM Rational Performance Tester
选择安装 IBM Rational Performance Tester(包括 Agent)
如果尚未安装 IBM Installation Manager,那么请按照向导中的指令安装它
在 IBM Installation Manager 打开时,请选择安装 IBM Rational Performance Tester 7.0.0
同意许可协议并为共享目录和 RPT 选择安装路径
选择典型安装并按照指令完成安装
如果想和许多用户一起运行测试,那么必须获得 RPT 的许可密钥。可以使用包含许可密钥的许可服务器或使用许可文件获得许可密钥。要指向 Rational 许可服务器或导入许可文件,则应该运行 IBM Rational License Key Administrator(在 All Programs -> Rational Software 中可找到)。工作台使用的所有代理控制器都可以自动使用工作台使用的许可密钥。