内容


Rational Performance Tester V8 性能加速技巧

Comments
免费下载:IBM® Rational® Performance Tester 试用版  |   IBM® Rational® 测试人员资源工具包
获取免费的 Rational 软件工具包系列,下载更多的 Rational 软件试用版

简介

Rational Performance Tester(简称 RPT)是 IBM 开发的用于验证 Web 应用程序可扩展性的模拟多用户的负载测试和性能测试工具。使用 RPT 能有助于尽早发现潜在的应用瓶颈,并保证业务关键应用能稳定运行和满足最终用户需求的规模。

在规模较大的性能测试项目中,经常会针对各种场景录制很多脚本,并模拟大量并发用户同时访问服务器或者服务器集群。在这种情况下,RPT 经常会出现反应缓慢甚至停止响应的情况,这极大影响了性能测试工作效率。本文将介绍几个能让 RPT 运行的更有效率的技巧来改善或者消除这种情况。

技巧 1:使用多台计算机执行测试

为测试至少准备两台计算机。由于 RPT 仅图形用户界面就会占用相当多的系统资源,因此在大的性能测试中,考虑到单机处理能力有限,可以在一台计算机执行测试(作为 RPT 代理)而在另一台机器上运行 RPT 工作台。按照我们的经验,一个 RPT 代理(2GHz CPU+2GB Memory 的机器配置)可以支持 ~500 并发用户(来源于一个典型的基于 Web2.0 的有复杂的后台业务逻辑的 Web 应用,它会随应用的不同而不同,读者以自己试验的结果为准)。我们可以根据需要模拟的并发用户总数估算出需要几台机器作为 RPT 代理。图 1 是一个采用 1 个 RPT 工作台驱动 3 个 RPT 代理的示例。

图 1. 多台计算机执行测试
图 1 多台计算机执行测试
图 1 多台计算机执行测试

技巧 2:增加最大 TCP/IP 可用端口数(Windows 平台)

运行测试的所有计算机都必须有足够的 TCP/IP 可用端口。Windows 平台下缺省的限制是 5000 个。我们可以运行 "netstat -a" 命令观察使用的端口,如果你观察到的最大的数字是 5000,那末你需要增加最大可用端口数。打开注册表 KEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters,创建一个新的名字叫 MaxUserPort 的 dWord,并且设置它的值,MaxUserPort 确定从系统请求任何可用用户端口时所用最大端口数,TCP/IP 可指定的最高端口号。如果建立 TCP 连接最大端口连接大于 5000,本地计算机响应以下错误信息 WSAENOBUFS (10055): 因为系统缺乏足够缓冲区或者因为队列已满而无法执行套接字上操作,从而导致应用程序的 10048 错误。我们可以设置为 60000。

图 2. 修改最大 TCP/IP 最大可用端口数
图 2 修改最大 TCP/IP 最大可用端口数
图 2 修改最大 TCP/IP 最大可用端口数

技巧 3:增加打开文件句柄数限制 (Linux/Unix 平台 )

Linux 平台对于每个进程能打开的最大文件句柄数(其中也包括 Socket 连接数)有限制(缺省为不超过 1024)。对于一般的应用程序和系统服务来说,足够用了。但是对于 RPT 这种需要在单进程内为模拟大量虚拟用户而建立大量网络连接的应用来说就不一定够了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会在控制台上打出“too many files open”的错误提示。要改变这个缺省值,用 root 登陆,输入 ulimit -n 30000(或者其他合适的值 ),然后重新启动 RPT 工作台。

图 3. 增加打开文件句炳数
图 3 增加打开文件句炳数
图 3 增加打开文件句炳数

技巧 4:优化测试内部的循环情况

如果你正在对服务器作压力测试。你的测试应该会包含一个循环。循环设置的位置有两个选择:在 test 内部(如图 4 所示)或者在 schedule 内部(如图 5 所示 )。因为与服务器建立的网络连接在 test 内部的循环中能够复用,而在 schedule 级别则不能。所以在同样循环次数情况下(例如访问 10 次百度),把循环设置在 test 内部(如图 4 所示)会有更好的性能。

图 4. Test 内部的循环
图 4 Test 内部的循环
图 4 Test 内部的循环
图 5. Schedule 内部的循环
图 5 Schedule 内部的循环
图 5 Schedule 内部的循环

技巧 5:优化日志配置

RPT 提供了强大的日志记录和定制功能。在单用户脚本调试阶段,我们通常会选择记录所有的日志,包括执行测试时抓取的每一个网页以及所有的变量。这在使用大量并发用户执行性能测试时,会产生大量的日志数据传输和存储负载,严重影响性能。当测试脚本经过调试没有问题以后,我们可以调整日志级别,选择只记录主要的动作而忽略详细信息,并且每组用户只记录其中少量用户。和日志相关的配置有两个地方,Test Log(记录测试正常执行的日志数据)和 Problem Determination(脚本执行出错时候的日志记录)。图 6 和图 7 给出了两个优化后的配置示例。

在 long run 测试中,我们还可以延长采样时间间隔,比如 30s 或者 60s。这个参数可以通过如图 8 所示的 Statistics 页面来配置。

图 6. Test Log 优化配置示例
图 6 Test Log 优化配置示例
图 6 Test Log 优化配置示例

图 6 大图

图 7. Problem Determination Tab 优化示例
图 7 Problem Determination Tab 优化示例
图 7 Problem Determination Tab 优化示例

图 7 大图

图 8. 延长采样时间间隔
图 8 延长采样时间间隔
图 8 延长采样时间间隔

图 8 大图

技巧 6:增加 RPT 代理可用的内存

在大型测试,可能需要为 RPT 代理增加可用内存。经过一次成功的测试执行后(不管并发用户多少)后,在 Test Navigator 中双击要调整的 RPT Agent 机器,在右侧面板中 General Properties 中查找 RPT_DEFAULT_MEMORY_SIZE(如果你找不到这个属性,你可以创建一个新的属性)。然后双击该属性,为它指定可用内存大小。对于 Windows 平台,建议设置为 1.5GB,对于 Linux,建议设置为 3GB。

图 9. 增加 RPT 代理可用内存
图 9 增加 RPT 代理可用内存
图 9 增加 RPT 代理可用内存

技巧 7:增加 RPT 工作台堆大小

在大型测试中,我们也需要为 RPT 工作台增加 JVM 堆。我们在产品安装目录下可以找到一个 eclipse.ini 文件。打开这个文本文件,找到 Xmx 参数行,我们可以把参数后面的数字修改为所需要的堆大小的值。在 Windows 最大是 1500M。在 linux 平台下大约是 3000M 修改后保存文件并重新启动 RPT 工作台。我们可以根据机器的内存情况设置一个合适的值。

图 10. 增加 RPT 工作台堆大小
图 10 增加 RPT 工作台堆大小
图 10 增加 RPT 工作台堆大小

总结

通过以上 7 个 RPT 性能加速技巧,我们可以消除不必要的 RPT 运行性能瓶颈,帮助我们高效率的使用 RPT 完成大规模的性能测试项目。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=491609
ArticleTitle=Rational Performance Tester V8 性能加速技巧
publish-date=05242010