使用 IBM Rational Performance Tester 对大容量测试优化负载处理过程

负载测试环境的最佳实践方式

当对测试多样化协议和大量负载模拟使用 IBM® Rational® Performance Tester 时,一定要优化测试机器和工具,以及网络和基础的性能。在本文之中,您将会发现通过配置测试工具与操作系统,您所采用的措施可以改进每台机器上 Rational Performance Tester 的负载生成功能。您还会学到大容量负载模拟期间,您可以使用到的技术,来矫正一些细微的错误。

Bharath Raj Keshavamurthy, 企业解决方案性能分析师, IBM

Bharath KeshavamurthyBharath Raj 在 IBM 印度软件实验室工作,在高性能所需应变解决方案(HiPODS)团队担任一名企业解决方案性能分析师。他在 IBM 的职业生涯开始于使用 Web 2.0 技术的一名 J2EE 应用程序开发人员。他从事中间件、Java 和数据库的性能工作,主要用于电信、零售和其它行业的企业解决方案。Bharath Raj 在性能调优、性能规划、测试和工程技术方面拥有深入的背景和经验,将整体方法应用到企业解决方案性能上。他继续使用尖端技术,并将它们吸收到企业 Web 应用程序中,实现优化的、更快速的和更可靠的解决方案。



2011 年 11 月 08 日

本文将 IBM® Rational® Performance Tester 环境的准备工作组织为三个部分。在第一部分之中,您将会学到部署 Rational Performance Tester 负载生成环境的方法,以及部署模式避免的信息。在第二部分之中,您将会学到如何调试参数,这些参数会促进最优的性能测试负载生成以及操作系统性能。最后一部分包含为运行一次成功的性能测试,启动性能测试之前您可以执行操作的信息。

应采用和须避免的 Rational Performance Tester 部署操作

考虑以下的建议,以部署 Rational Performance Tester 负载生成环境:

  • 使用多台低端配置(对于 CPU,内存而言)的代理机器,并让这些机器生成负荷。如果您使用高端配置的少量代理机器,那么操作系统会受到可用接口,处理并行以及多线程的限制。因此,使用低端配置的多台代理机器,可以并发用于性能测试,而不是垂直测试少量高端配置机器上的代理。


    注意:
    低端配置机器就是那些 CPU 数量少和内存容量较小的机器。但是,CPU 频率的高低不应该被看做低配置的参数。推荐 Rational Performance Tester 代理机器的 CPU 频率为 2.33 GHz 或者更高。
图 1. 不同拓扑结构在设计负载生成环境下的比较
负载生成环境及其影响的拓扑结构

图 1 的大图

  • 如果测试代理位于虚拟环境之中,那么您要确保安装性能测试代理软件的机器上的逻辑性分区拥有固定的物理以太网控制器,以支持高容量的网络交通量。

    重点:
    不要将逻辑主机以太网适配器或者虚拟以太网设备用作网络界面,来在 Rational Performance Tester 代理逻辑性分区上运行性能测试代理服务。
  • 确定与控制器和性能测试相同网络之中的所有代理都已经创建起来了。这样做可以确保有最小的网络潜伏期,并能更快地转移主机控制器和代理机器之间的统计,测试资源和数据。

好的拓扑决策

图 2 和图 3 中演示了前两个拓扑。您可以采用最佳实践来部署 Rational Performance Test 环境

拓扑 1:性能测试解决方案的最佳机理

在性能测试期间,您必须要将负载生成环境安装到测试解决方案相同的网络之中,这样在负载生成环境与解决方案之间有较小的网络潜伏期。在将网络潜伏期最小化之后,就更容易分析性能瓶颈了,但是很难排除故障的网络错误和包丢失量也在下降,并且可能导致交易错误,尽管服务器能得到有效地操作。

图 2. 性能测试环境之下首个拓扑结构
性能测试的拓扑结构 1

图 2 的大图

拓扑 2:Rational Performance Tester 主机控制器位于解决方案网络的外面,但是性能测试代理却位于解决方案网络的里面

该拓扑与拓扑 1 几乎相同。这里,由于变化的网络问题,主机控制器及其代理之间可能存在交流问题,例如网络管网的带宽,以及 Rational Performance Tester 之中服务器的网络卡。有了它,这种机理的缺点在于阻止以下情况下性能测试的顺利执行:

  1. 性能测试的一般执行运行,或者性能测试的执行会在长持续期 / Endurance 性能测试中进行,它会一起运行数天,并快速取样。
  2. 载入生成有很多种测试机构,大约有 25 个测试机构或者更多。

如果主机控制器及其代理之间的网络连接性和带宽不统一,那么这 可能 会导致交流错误(网络包丢失),并进一步导致性能测试的不正常终结。以下的错误可能也会发生:

  • “除了 xx 事件之外工作台不能从其他的代理那里接受信息 ”
  • “不能连接至代理。连接时间超出”
图 3. 性能测试第二个拓扑结构
性能测试的拓扑结构 2

图 3 的大图


避免的部署模式

当您在部署 Rational Performance Tester 环境时,图 4 和图 5 演示了避免的拓扑模式。

模式 1:Rational Performance Tester 代理部署在与解决方案构件相同的硬件之上

尽管这种性能测试的拓扑结构能够保证测试代理与解决方案之间最小的网络潜伏期,但是在解决方案与性能测试环境之间还可以共享操作系统资源。在这种情况之下,由于解决方案环境与性能测试环境之间相同操作系统资源使用情况不同带来的极大复杂性,资源使用分析就变得十分的困难了。而不精确的分析又将导致性能问题识别,分析和故障排除所用的数据也不精确。因此,对于性能测试环境部署来说,并不推荐使用该拓扑结构。

考虑以下的操作系统资源:

  • 处理器使用
  • 内存使用
  • 解决方案构件和代理进程的 TCP/IP 接口
  • 网络带宽,包括解决方案构件和代理进程中发送的比特数以及每秒所接受的比特数

注意:
对解决方案构建部署性能测试机器,除了对进程,内容和网络带宽使用有影响,对操作系统层次上 可用 TCP/IP 接口的使用 也有影响。

Rational Performance Tester 会为性能测试负载生成期间所作的请求创建连接。每个连接都会使用 TCP/IP 接口。该号码只限于 65,535(而 TCP/IP 协议只允许在操作系统平台之上有 65,535 个 TCP/IP 端口)。

如果性能测试代理使用了大量的 TCP/IP 接口,那么解决方案构件的接口连接就会不够用了,这会制造一个性能瓶颈,并导致性能低下。

图 4. 避免性能测试的首个模式
避免测试的首个模式

图 4 的大图

模式 2:整个负载生成环境(主机控制器和测试代理)不在解决方案网络之内

为测试解决方案避免这种拓扑结构,因为它会导致网络错误,包丢失,等等。因此该拓扑并不会导致性能测试期间的中断和错误,但是在驱动解决方案服务器上网络吞吐量及负载方面变得困难起来。

图 5. 避免性能测试的第二个模式
避免测试的第二个模式

图 5 的大图


测试环境之下的性能调试

Rational Performance Tester 接下来的调试参数得到了试用,并成功地进行了测试,以生成 35,000 虚拟用户的大量用户负荷,带有使用 HTTP 协议 3 端基于网络程序多达 3,000 虚拟用户的的用户并发率。

当您在 1000 – 10,000 并发虚拟用户的用户负载上测试一个网络程序时,您可以应用这些参数。

声明:这些调试参数被注明为向操作系统的网络通过行为提供了 25 – 40% 的改进,并作为程序负荷特征。达到的性能改进在不同的平台上在 5 – 10% 之间进行变化。AIX 平台上的改进更为显著。
这些参数就是一个引用点。您可以根据测试的程序工作负荷及容量来进行映射,这样您就可以得到测试的适当值了。
表 1:负载生成最佳性能的操作系统调试
操作系统参数实施内容
WindowsMaxUserPort65534编辑 HKEY_LOCAL_MACHINE > System > CurrentControlSet > Services > TCPIP > Parameters 之下的注册表。所有的参数必须作为 DWORD 添加,并将值设置为 Decimal
TcpTimedWaitDelay30
MaxFreeTcbs72000
MaxHashTableSize65535
TcpWindowSize65535
EnableDynamicBacklog1
MinimumDynamicBacklog20
MaximumDynamicBacklog1000
DynamicBacklogGrowthDelta10
TcpAckFrequency1
Linuxnet.ipv4.ip_local_port_range2048 65000使用以下的参数来编辑 /etc/sysctl.conf
并保存文件。运行以下的命令 – sysctl –p
net.core.rmem_default262144
net.core.wmem_default262144
net.core.wmem_max33554432
net.core.rmem_max33554432
net.core.netdev_max_backlog5000
net.ipv4.tcp_no_metrics_save1
net.ipv4.tcp_rmem4096 16777216 33554432
net.ipv4.tcp_wmem4096 16777216 33554432
net.core.optmem_max40960
AIXsb_max6192000no –p –o <parameter> = <value>
chdev -l sys0 -a maxuproc=<value>

clean_partial_conns1
tcp_timewait1
tcp_keepidle600
tcp_keepinit40
tcp_nodelayack1
tcp_keepintvl10
Maxuproc8192
tcp_sendspace4096000
tcp_recvspace4096000
tcp_ephemeral_low1024
rfc13231

启动性能测试之前要考虑的活动

  • 确保您在代理机器上启动了 Rational Performance Test 代理服务。
  • 确保您在从代理上启动测试之前,在使用 netstat 命令的 CLOSE_WAIT 或者 TIME_WAIT 上没有连接。

    注意:
    当服务器关闭它的连接时,TIME_WAIT 连接就会发生了,但是客户端会等待致谢的信号以关闭连接。在持续时间超出限额之后连接将会改为 CLOSE_WAIT,而操作系统必须关闭该连接。在您启动性能测试之前,拥有这两种状态的连接会阻止 Rational Performance Tester 在测试运行期间使用到该连接,这意味着测试之前不会发生这种类型的连接。启动之前这可以确保一个纯粹的网络状态。
  • 对于 UNIX 操作系统上的代理机器,查找名为 rpt_runner 的进程,在您运行性能测试之前将其关闭掉。在 Windows 之中,查找 Task Manager 中 的 Java,并在开始测试之前关闭相同项目的运行。

    注意:
    停止 Linux,AIX 上的 rpt_runner 进程,或者 Windows 上的 Java 并不会停止 Rational Performance Tester 代理服务。代理进程会在所有测试启动时开始。因此,在下一次测试开始之前,关闭这些进程(测试运行完成之后如进程存在的话)可以确保与前面测试相联系的代理进程,可以避免在操作系统上运行。在测试完成之后,由于性能测试期间性能测试或者错误的意外终止,这些进程可能会继续存在。
  • 在 Microsoft Windows 机器上,激活主机控制器上的状态选项显示:Windows > Preferences > General > Show heap status。您可以使用它来追踪测试运行期间 Rational Performance Tester 的内存使用情况。如果内存使用率上升的话,您可以点击累积状态栏上的废物收集图标,来手动强制收集废物。知道这一点,可以帮助您了解主机控制器的内容使用情况。
  • 关闭主机控制器工作台,并再次将其启动,以在启动测试之前实现 JVM 累积内存的最小使用。您必须强制收集废物一次,以在开始测试之前清除 Rational Performance Tester JVM 累积内存之中未引用的对象。
  • 删除以下目录之中的所有内容,并在运行测试之前重新启动代理服务器:
    • 操作系统的临时目录。基于 Unix 操作系统的是 /tmp,Windows 平台上是 C:\Documents and Settings\<User>\temp 目录)
    • 代理的 Deployment_root 目录
    • C:\Documents and Settings\user name\Local Settings\Application Data\javasharedresources 中呈现的共享类资源
    • 在特定的情况之下,您必须重启性能测试代理机器的操作系统。
  • 确保在临时目录中有足够多的硬盘空间,而文件系统包含了 deployment_root 文件夹。临时目录的推荐最小值是 10 GB,对于部署目录来说则是 5 GB。
  • 在生成高负荷并考虑同步点时,您可以使用多种小型配置代理机器,而不是少量的大型配置机器,以得到更好的结果。
  • 如果测试持续时间过长,或者涉及到请求的高通过生成情况,那么就可以避免高速情况下的统计取样。对于性能测试工具来说,较高的统计取样率负担过重,所以必须设为一个最佳的数值。例如,在 2 个小时的测试运行期间,15 秒的取样间隔是最佳的统计取样率。
图 6. Rational Performance Tester 之中的统计取样率
对于大测试持续将取样率设置为较大的值
  • 将错误日志设置为小值登录。在运行大量测试以获得负载生成的最佳性能时,只有错误或者警告可以作为主测试操作记录。
图 7. Rational Performance Tester 中的登录层次选项
主性能测试期间您可以设置登录层次为低

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=782454
ArticleTitle=使用 IBM Rational Performance Tester 对大容量测试优化负载处理过程
publish-date=11082011