内容


IBM Cognos 最佳实践

IBM Cognos 10.1 BI JMeter 稳定性测试

文档性质:最佳实践;产品:IBM Cognos 10.1 BI Server;关注领域:性能;版本:1.0

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: IBM Cognos 最佳实践

敬请期待该系列的后续内容。

此内容是该系列的一部分:IBM Cognos 最佳实践

敬请期待该系列的后续内容。

免费下载:IBM® Cognos® Express V9.5 或者 Cognos® 8 Business Intelligence Developer Edition V8.4 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

目的

本文档附带一份测试计划,可配合 Apache JMeter 对 IBM Cognos 10 BI Server 安装的稳定性进行压力测试。文中介绍了如何使用 JMeter 来运行测试计划,并根据给定设置对其进行配置。除了简单介绍 IBM Cognos 10 BI Server 的背景信息之外,还提供了执行报告,以及有关使用和结果解释的一些建议。

本文档所述的测试计划和流程已在多个客户安装以及某些 IBM Cognos 为主的稳定性测试中成功应用。

只要您对以下任何问题的回答为 “是”,那么这份稳定性测试计划就是一个良好的起点。

  • 无其他压力和稳定性测试软件,例如 Rational Performance Tester 或 Mercury LoadRunner。
  • 系统在负载下表现不稳定、响应失败、响应时间过程、出现意外错误消息,或者需要一种触发错误的工具来进行故障排除。
  • 需要检查安装的稳定性和负载情况,以便随后将其转入下一个发布阶段,例如测试或前期生产阶段。
  • 需要测试稳定性并希望迅速了解性能收益,例如,在添加了另一个 Report Service 实例之后。

适用性

本测试计划必须使用 Apache JMeter version 2.4 或更高的版本运行。本计划兼容旧版的 Jakarta JMeter。

JMeter 是一种基于 Java 的工具,可在几乎所有平台/OS 上使用,因此本计划同样可通过所有受支持的 JMeter 平台运行。

本测试计划近期在多种操作系统上使用不同的设置进行过测试。本测试计划适合测试任何 IBM Cognos 10 BI Server 设置,还适合任何设置拓扑、混合使用的多种操作系统以及多种位数的操作系统。完全支持使用 IBM Cognos Application Firewall (CAF),建议始终启用 CAF。

排除和例外

本文提供的测试计划专为 IBM Cognos 10 BI Server release 10.1 和 10.1 FP1 (10.1.0.1) 而设计,可能无法正常地对其他版本运行本测试计划,因为 HTML 请求可能存在变化,因此会造成错误的结果。除非本文档明确说明,否则不要尝试使用其他版本。在新补丁或更新包发布之后,本文档将随之更新。

测试计划目前运行 IBM Cognos Viewer 中产品附带的样例包内的报告。其中不包括:

  • 运行任何 Studio、Dashboard (Business Insight) 或 Active Reports
  • 利用动态查询模式的包
  • 启用了 SSL 的网关

免责声明

本测试计划按照 “原样” 提供,其唯一的目的就是提供快捷、通用、轻松的方法来检查可能较为复杂的 IBM Cognos 10 BI Server 安装的稳定性及其在负载环境下的稳定性。

本测试计划应仅作为观察复杂环境中稳定性和系统操作的起点。任何较为重要的分析(特别是与性能有关的分析)都应作为 IBM Services 合作项目的一部分,应使用 IBM Rational Performance Tester 等商业负载测试工具完成。尽管运行所提供的测试计划的结果可提供有关 IBM Cognos 10 配置问题、必要的第三方配置/调优和可能的稳定性问题的宝贵线索,但您应始终将这些线索转交给 IBM,由 IBM 解释线索并解决任何问题。IBM Cognos 10 是一种复杂的产品,运行本测试计划所产生的结果或问题可能并非始终与具体的一项原因相关,往往需要对架构和流程流具备丰富的知识才能正确解释结果。建议始终在 IBM 信息中心和 IBM Cognos 支持网站中搜索有关遇到的错误消息的信息。

测试计划本身不属于 IBM Support 的任何正式支持服务。如果您对个别具体的负载测试和性能调优实践感兴趣,请联系您的 IBM Cognos 代表。

部分背景信息

JMeter

JMeter 是一种纯基于 Java 的工具,是在 Jakarta 组织的一个开放源码软件项目中开发的。其目的在于向某些服务器发送几种类型的请求,并收集响应。JMeter 支持 HTML、XML、SOAP、JDBC 和其他请求。它能执行多个线程,因此能够模拟实际用户访问一个系统的情况。它允许手动构建测试计划,也支持通过某种代理记录根据大量请求编译而成的测试计划。可以使用编程逻辑充实计划,例如条件执行、响应解析等。

JMeter 工具的主页是 http://jakarta.apache.org/jmeter/

有关使用 JMeter 和计划中各个元素的用途的详细信息,请参阅 JMeter 文档。

IBM Cognos 10 报告执行

IBM Cognos 在执行任何类型的报告时都要利用会话 的概念。会话就是一项包含多个步骤的操作,每个步骤从技术角度来讲都是一个单独的请求。因此,执行一个报告就是执行一系列的请求和响应,而不是执行单独一次请求和一次响应。

会话从一个主请求开始,并且可以存在属于相同会话的一对多辅助请求。每个会话都是在同步 模式中开始的,也就是说,请求的发送者会等待接收响应。在这段时间内,发送者被阻塞。如果需要等待数秒钟的时间,那么这种做法的效率非常低,因此出现了一种称为主等待阈值 (PWT) 的超时机制,在此时间段后会话将转入异步 模式。此时,请求序列将发生变化。

在会话转入异步之后,请求的发送者就必须按指定时间间隔发送检测请求 (heartbeat request),以便保持会话的活动状态。如果检测信号停止,则接收服务将停止处理当前请求,因此会话将结束,并且发生错误而非提供结果。检测信号的默认超时时间是 30 秒,该时间值称为辅助等待阈值 (SWT)。因此,客户端需要每隔 30 秒向相同的服务发送一条 wait() 请求,以保证会话一直处于活动状态,在完成当前请求的处理之后,还需要发送信号,然后发送者/客户端才能检索结果。wait() 请求所需的迭代次数完全取决于系统资源。如果系统负载较高,例如,存在多个并发用户,那么系统可能需要更多时间来处理一次会话,所需的时间远远超过仅有一名用户使用系统时需要的时间。也就是说,根据实际的系统负载情况,每个会话在 HTML 级别都可能看起来有所不同。

这是无法使用某些工具简单地记录并回放报告执行的主要原因。如果在 PWT 的时间限制内,一次主请求未得到应答,那么会话必须转入异步模式,然而,如果这未得到记录,则请求会失败。底线在于,每个会话在每次执行时所需发出的请求次数可能各不相同。

所有这一切都由构成一次会话的请求反映出来。如果客户端是运行 IBM Cognos Viewer 工具的浏览器,会话由同属 IBM Cognos Viewer 的 HTML 页面中内嵌的 JavaScript 处理。如果客户端是一个 IBM Cognos SDK 程序,则会话处理必须与客户端自身实现。这也适用于 JMeter 计划,它此时必须效仿 JavaScript 的功能,传递特定的 HTML 形式的变量。

只要有某些内容执行,就要用到会话,例如报告、代理、分析、仪表板等。在 IBM Cognos 服务彼此交互时,也会发生会话,每项服务实现会话处理的客户端部分。

IBM Cognos SDK 产品中包含的《IBM Cognos SDK 开发人员指南》中介绍了客户端应用程序中的会话处理。就本文档的目的而言,上述信息便已足够。

开始之前的一些考虑事项

JMeter 的安装位置

在测试过程中,JMeter 应用程序会模拟用户通过浏览器与 IBM Cognos 10.1 的会话。JMeter 会为各会话开放一个线程(并发用户),因此必须使用足够快的 CPU 和足够多的 RAM,避免 JMeter 一端出现瓶颈问题。

为了从测试中获得最大的利益,JMeter 应用程序应在未安装任何 IBM Cognos 10.1 组件或数据库的独立机器上运行。如上所述,根据您希望模拟的用户数量,可能要使用大量的线程和套接字,这可能会给机器性能造成严重影响,如果机器原本就忙于运行 IBM Cognos 10.1,那么额外增加 JMeter 的资源需求显然不是理想的做法。

运行 Linux 的机器有着卓越的线程支持,因而最适合运行 JMeter 测试,但配备高速处理器(1.5 GHz 以上)和充足的 RAM(1GB 以上)的机器也能有出色的表现,一切都取决于您希望模拟的线程数量。只要用户数量超过 30 个,就应该在符合上述配置的系统中运行测试。如果模拟的用户数量较少,则您可以随意选择闲置的机器。上述建议是依据作者的个人经验给出的,未经过大规模测试。

网关挑战

在模拟大量用户通过网关访问 IBM Cognos BI Server 的情况时,需要注意一个问题。如果使用的是 CGI 网关,Web 服务器会为每个用户会话实例化一个 CGI 可执行文件的实例。每个实例都将是一个独立的进程,都占用一份内存和资源。在增加用户数量时,应考虑到这个问题。您可能会使网关机器超载。

因此,最佳实践是使用性能更加出色的其他网关来实现,例如用于 Apache Web 服务器的 MOD、MOD2、MOD2_2 或用于基于 Microsoft IIS 网关的 ISAPI。CGI 网关最为通用,受所有 Web 服务器的支持,但不适合生产系统,更不适合负载较重的系统。

基本上,应该尽可能使用 MOD 或 ISAPI。测试计划可与任何网关一起使用,也可直接与 IBM Cognos Dispatcher 一起使用。

使用监视工具

在使用本文提供的计划进行测试时,建议细心观察操作系统级、查询或 Content Manager 数据库的资源消耗情况。对系统施加较高的负载可能有助于识别之前未曾发现的瓶颈或挑战。

您应具备足够高的访问权限或特权,以便运行 IBM DB2 Control Center、Oracle Enterprise Manager、MSSQL Enterprise Console 等管理工具以及操作系统监视命令等。

自 IBM Cognos 8.3 起,产品本身便提供了全面的系统监视。在一台独立的机器上启动浏览器,使用 IBM Cognos Administration 工具来监视如下信息:

  • 生成的 Report Service 进程的数量
  • 为各 Report Service 进程开放的线程的数量
  • 为 IBM Cognos 10 组件开放的线程的数量
  • 与查询和内容存储 DB 的连接数量
  • Content Manager 和 Dispatchers 的内存消耗
  • 交互式任务的数量

以上并非完整列表,但提供了合理的起点。

有关通过自 IBM Cognos 8.4 起提供的 JMX 进行监视的具体信息,请参阅《IBM Cognos 10 系统管理方法》,可在 IBM developerWorks 的 Cognos 最佳实践部分中找到这篇文章,URL 如下:
http://www.ibm.com/developerworks/cn/data/bestpractices/cognos/

先决条件

在运行测试计划之前,您需要安装 JMeter 2.4,并设置 IBM Cognos 10.1 样例。

检查 JMeter 先决条件

JMeter 是一种基于 Java 的工具,因此您需要具备一个可以正常工作的 JRE 环境来运行 JMeter。JMeter 2.4 需要 JRE 1.5 或其更高版本,最好使用 1.6 版本。

开发此版本的计划是使用 JMeter 2.4 及 JRE 1.6.0.12 完成的。

如需了解 JMeter 先决条件的更多详细信息,请访问
http://jakarta.apache.org/jmeter/usermanual/get-started.html

安装 JMeter

第一项任务是获得 Apache JMeter 软件,并将其安装在指定用于运行该软件的机器上。您可以在这里下载适用于各种平台的 JMeter:
http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi

在下载二进制文件之后,只需使用适合您的操作系统的工具解压缩(ZIP、TAR、GZIP)即可。设置您的 JRE 环境变量,特别是 JAVA_HOME,随后即可开始使用 JMeter。调用 jmeter.bat 或 jmeter.sh 脚本来启动 JMeter。有关 JMeter 高级特性的帮助信息,例如命令行模式、SSL 支持等,请参阅:
http://jakarta.apache.org/jmeter/usermanual/get-started.html

安装 IBM Cognos 10 BI 样例包

本文档所讨论的测试计划将运行随 IBM Cognos 10.1 提供的以下样例包中的报告。

  • GO Data Warehouse(查询) -> “Cognos Samples” 部署
  • GO Data Warehouse(分析) -> “Cognos Samples” 部署
  • GO Sales(查询) -> “Cognos Samples” 部署
  • Sales and Marketing(多维数据集) -> “Cognos PowerCube” 部署

GO Data Warehouse 包和 GO Sales 包使用的是关系数据源,但 Sales and Marketing 包基于 IBM Cognos PowerCube。

在《IBM Cognos 10 安装和配置指南》的第 9 章中可以找到有关这些样例包的安装说明,另外也可在线访问 IBM Cognos 10 信息中心

测试计划的配置

启动 JMeter 并载入测试计划之后,您会看到 JMeter GUI。左侧的窗格允许您按照分层树形结构浏览测试计划。右侧窗格显示了左侧窗格中选中的元素的属性和设置。

图示 1:展开的 JMeter 测试计划元素树
图示 1:展开的 JMeter 测试计划元素树
图示 1:展开的 JMeter 测试计划元素树

自 2.1.2 版本之后,JMeter 默认情况下会展开树形窗格中的所有元素。这种默认行为加大了浏览整个测试计划的难度,因此建议将 JMeter 设置为在启动时不必展开所有元素。为此,请在启动 JMeter 时使用命令行开关 -Jonload.expandtree=false,或者编辑 jmeter.properties 并添加 onload.expandtree=false 一行代码。

在打开 JMeter 之后,展开顶级节点 “IBM Cognos 10.1 – BI Stability package”,这将显示名称相同的另一个节点。再展开此节点。现在,展开 “Overall Tests” 元素,您就可以得到计划的清晰概览,如下图所示。

图示 2:折叠的 JMeter 测试计划元素树,突出显示了登录/注销请求、要执行的请求和配置属性
图示 2:折叠的 JMeter 测试计划元素树,突出显示了登录/注销请求、要执行的请求和配置属性
图示 2:折叠的 JMeter 测试计划元素树,突出显示了登录/注销请求、要执行的请求和配置属性

折叠第二级的所有元素之后,即可提供测试计划结构的良好概览。共用四个通用配置元素,一个顶级元素包含所有测试计划步骤,两个元素用于将测试结果可视化。

在上面的屏幕快照中,主配置元素 “Test configuration Parameters”(以红色突出显示)将参与根据特定环境调整计划,此时它将调整自己的属性(以黄色突出显示)。有关这些配置属性的更多详细信息将在 配置参数 一节中提供。

测试本身具有两个元素,用于处理登录和注销请求(以绿色突出显示),这将在 配置身份验证 一节中介绍,接下来的一节介绍执行报告的八个元素(以浅蓝色突出显示)。

理解计划结构并禁用特定测试

测试计划运行 8 个报告,部分报告中包括提示,而且会使用不同的输出格式。下面是将运行的报告列表,以及有关报告的部分具体信息。

  1. Budget vs Actual,GO Data Warehouse(分析)
    • 使用 HTML 格式运行
    • 不涉及提示
    • 在显示第一页之后,提供了一个 “Next Page” 操作
    • 基本上就是一个非常简单的交叉表格报告
  2. Order Invoices - Donald Chow, Sales Person , GO Sales(查询)
    • 使用 PDF 格式运行
    • 不涉及提示
    • 从 CS 检索 PDF(257 页)
    • 一份显示一些清单报告并具有某些版式布局和商标的报告
  3. Planned Headcount, GO Data Warehouse(分析)
    • 使用 HTML 格式运行
    • 不涉及提示
    • 将显示一份包含 5 个图表的报告。计划将下载图表的独立 GIF 展示,以便模拟 HTML 报告输出的查看情况。
  4. Global Bonus, GO Data Warehouse(分析)
    • 使用 HTML 格式运行
    • 有一个提示页面,包含两个参数。使用的值是 Year=2005 和 Region=Americas
    • 清单报告
  5. Pension Plan, GO Data Warehouse(查询)
    • 使用 CSV 格式运行
    • 无提示
    • 一份包含大量数据的清单报告
  6. Recruitment Report, GO Data Warehouse(分析)
    • 使用 XLWA 格式运行
    • 具有一个提示页面,包含一个参数。使用的值是 Year=2006
    • 一份包含多幅图片和一个表格的报告
  7. Historical Revenue , Sales and Marketing(多维数据集)
    • 使用 HTML 格式运行
    • 具有两个提示页面,分别包含一个参数。使用的值是 Year=2006 和 Month=June
    • 包含单独一个图表的报告,需要检索图表
  8. Revenue by Product Brand (2005) , Sales and Marketing(多维数据集)
    • 使用 HTML 格式运行
    • 无提示页面
    • 一份包含两个图表和两份清单的报告,需要检索图表

测试计划显示为分层的树形结构。顶级元素是 “Overall Test”,其中包含全部子元素。元素带有编号,01 和 99 号元素仅用于身份验证(相关详细信息,请参见配置身份验证一节)。所有其他元素都用于执行特定的报告。如果您希望排除某些报告,使之不进入测试,只需右键单击元素,并在所显示的上下文菜单中选择 “Disable” 即可。在运行测试时,这些报告将被跳过。

图示 3:右键单击计划元素并选择 Disable 来禁用计划元素
图示 3:右键单击计划元素并选择 Disable 来禁用计划元素
图示 3:右键单击计划元素并选择 Disable 来禁用计划元素

在左侧的树形窗格中,您将看到已禁用的元素显示为灰色。您可以右键单击元素来访问相同的上下文菜单,在其中选择 “Enable” 即可再次启用该元素。

由于测试计划可作为分层树,因此一个元素或节点即可包含作为该上下文中的子元素的其他节点。测试计划中执行报告的部分是一个特殊类型的元素,即所谓的 “事务控制器”。这基本上意味着,在测量执行时间和成果的时候,所有子元素都被视为单独一个事务。第 2 级有在测试过程中执行的各报告的总报告元素的一个子元素。同样,这些每报告一个的元素也是事务控制器。这允许获得执行特定报告的会话的所有步骤的总时间,而不考虑报告细节和步骤。

在测试计划的开头处,您可以看到两个 Listener 元素。这些元素将记录所有请求、响应,并使用某种用户友好的格式显示数据。“View Result Tree” 元素将显示所发出的计划请求的树形视图,“Aggregate Report” 元素将显示一个极度类似于清单报告的视图。第 6 节将更加具体地介绍这些 Listener 元素。要添加额外的 Listener 元素,只需右键单击并从 Listener 类别中添加即可。选择包括图形和统计视图。相关具体信息请参阅 JMeter 文档。

配置参数

在根据给定环境配置计划时,需要处理两个位置,标记为 “Test configuration parameters” 的元素就是其中之一。通常有五个参数需要指定,并根据给定环境加以定制。

  • servername:指定 NetBIOS 或您的 IBM Cognos BI 入口点的完全限定服务器名称。这可以是任何网关或外部分派器 URI。
  • port:入口点的网络端口。
  • url:入口点的 URL。这通常是服务器名后接的所有内容,包括一个引导 “/” 字符。
    对于网关,其形式为 /<alias>/cgi-bin/<gateway_executable>。
    网关示例:/ibmcognos/cgi-bin/cognos.cgi
    对于分派器,其形式为 /<context_root>/servlet/dispatch/ext
    分派器示例:/p2pd/servlet/dispatch/ext
  • Namespace:这是用于身份验证的名称空间(如果有)的名称空间 。可以使用 IBM Cognos Configuration 获取名称空间 ID。如果您希望在无身份验证的情况下运行,请将此项留空,相关具体信息请参阅 配置身份验证 一节。
  • templocation:IBM Cognos 10 更改了报告执行的临时对象位置,从 Content Store 更改为本地文件系统。这也就是说,默认情况下,作为报告的一部分的图表、图形和其他二进制输出将存储在本地配置的(使用 IBM Cognos Configuration)Cognos 临时文件夹中,而不是像 IBM Cognos 8 那样存储在 Content Store 中。这影响了显示报告时用于检索这些部分的 URL。测试计划必须使用与 IBM Cognos 10 BI 匹配的设置,才能检索测试计划元素 04、08、09 的图表。如果未能正确设置这项属性,则结果树形视图中不会有任何标有 “Retrieve graph output” 的样例。尽管这不会导致测试计划失败,但可能会导致错误的结果,或者妨碍显示图形时检测 Graphics Service 错误,因为并未预期到使用缺失的图表。应始终将此设置为 FS 值,除非 IBM Cognos 10 的配置更改为使用 Content Store 作为Temporary objects location property(在整体的 Dispatcher 属性下),如果是这种情况,那么您应该使用 CM 值。
    图示 4:Dispatcher 属性中的 Temporary object location property 设置为服务器文件系统的默认值
    图示 4:Dispatcher 属性中的 Temporary object location property 设置为服务器文件系统的默认值
    图示 4:Dispatcher 属性中的 Temporary object location property 设置为服务器文件系统的默认值

另外还有其他一些参数用于某些更高级的特性。您通常并不需要更改这些参数,但在您确实了解更改的影响时,可以对这些参数做出调整。

  • Outputlocale:通过这项设置,您可以指定报告输出的输出区域设置,从而覆盖 IBM Cognos 10 用户配置文件中指定的输出区域设置。
  • pwt:这个参数指定报告执行会话的主等待阈值。IBM Cognos Viewer 使用的值是 3 秒,其他客户端使用的值通常是 7 秒。如果将其设置为 0(零),则将阻止会话转为异步模式,从而阻塞系统中的资源,并且会使每个用户线程等待请求结果。这将导致性能低下,但有时也会用于排除问题。
  • swt:这个参数指定报告执行会话的辅助等待阈值。默认值是 30 秒,并且不应做出更改。降低此值无益于更快或更早地获取结果,因为任何服务都可能独立于 SWT 向正在等待的客户端发送信号,表明已经完成了请求处理。按照相同的思路,增大这个值夜不一定会因为更低频率地重新载入检测请求而节约资源。此属性主要用于故障排除。

配置身份验证

如果您的测试不涉及身份验证,也就是说您的 IBM Cognos 10 BI 允许匿名访问,只需将名称空间参数留空即可。测试计划会采取相应的措施,跳过身份验证步骤。

如果您的测试确实涉及身份验证,您首先需要在 namespace 参数中提供据用于身份验证的名称空间的名称空间 ID,如 配置参数 一节所述。

除此之外,您还需要提供一个文件,其中应该包含来自该名称空间的用户和密码。每个 JMeter 线程都代表一个用户,并从此文件中获取一组凭据,将其用于 IBM Cognos 10 BI 身份验证。如果线程到达用户文件的末尾,则将再次从头开始。文件的命名需要使用您在 配置参数 一节中为 servername 参数指定的值,并在该名称后附加 “users.xml”。该文件必须放置在 JMeter 安装的 /bin 子目录中。举例来说,如果您的 servername 是 “myserver”,JMeter 将在 <JMETER_INSTALL>/bin 目录中查找一个名为 “myserverusers.xml” 的文件。

如果您确实必须更改该文件的名称,请展开 “01 – Logon” 元素,随后展开子元素,直至找到 “Read user from File”。在该元素中可以指定不同的文件名称。不能使用相对或绝对路径。文件必须放置在 /bin 子目录中,此处仅能指定文件名称。

此文件必须是使用以下布局的 XML 文件:

<allthreads>
	 <thread>
		<parameter>
			<paramname>CAMUsername</paramname>
			<paramvalue>myuser</paramvalue>
		</parameter>
		<parameter>
			<paramname>CAMPassword</paramname>
			<paramvalue>mypassword</paramvalue>
		</parameter>
	</thread>
</allthreads>

可以有一对多的 <thread> 元素,其中又可以包含一对多的 <parameter> 元素。一个用户会话由一个 <thread> 表示,因此一个用户会话的所有参数都必须是该 <thread> 元素的子元素。由于我们的目的是为用户提供凭据,因此必须提供与希望模拟的用户数量相同的 <thread> 元素,每个此类元素包含两个 <parameter> 元素,该元素又包含一个 <paramname> 和一个 <paramvalue> 子元素。

对于新 “用户”,只需重复整个 <thread> 元素,并在 <paramvalue> 子元素中指定值即可。无需更改任何元素的名称。如果 <thread> 元素的数量少于 JMeter 为用户会话生成的线程,则实际线程将回过头来,从第一个元素开始运行。

包含多个用户的一个文件应如下所示:

	<allthreads>
	<thread>
		<parameter>
			<paramname>CAMUsername</paramname>
			<paramvalue>scarter</paramvalue>
		</parameter>
		<parameter>
			<paramname>CAMPassword</paramname>
			<paramvalue>good2go</paramvalue>
		</parameter>
	</thread>
	<thread>
		<parameter>
			<paramname>CAMUsername</paramname>
			<paramvalue>csmith</paramvalue>
		</parameter>
		<parameter>
			<paramname>CAMPassword</paramname>
			<paramvalue>4whldrv</paramvalue>
		</parameter>
	</thread>
	</allthreads>

请务必牢记,用户可以多次登录 IBM Cognos 10 BI,以便创建多个会话。从理论上讲,您只需一组凭据即可模拟任意数量的已登录用户,但如果您需要审计测试,那么最好对您希望模拟的每名用户使用至少一组凭据。

配置线程数量和启动

默认情况下,测试计划仅使用单独一个线程,运行一次。

很有可能需要模拟多个用户,因此线程数量和可能的迭代次数也要增加。为此,单击树中的第二个 “IBM Cognos 10.1 - BI Stability package” 元素即可。这也就是所谓的 “线程组” 元素。

图示 5:线程组元素的属性
图示 5:线程组元素的属性
图示 5:线程组元素的属性

线程组元素的属性将显示在 JMeter 右侧窗格中,还可以指定线程数量、启动时间和循环计数。JMeter 会在指定的启动时间内平均分布新线程的创建。因此,如果有五个线程,启动时间是 25 秒,那么每 5 秒钟将启动一个新线程。

除了这些参数之外,还有一个指定在线程出错时执行哪项操作的设置。该项设置为 “Stop Thread”,切勿加以更改,因为这使您能够轻松识别在测试执行过程中发生的错误。计划的构建旨在验证一项请求是否成功执行。如果得到了意外的结果,那么线程会出错,您可以识别出计划中发生错误的准确位置。

运行测试

可以使用 Run 菜单启动和停止测试计划。

所有活动(即每一项请求的结果)都将由计划内的两个 Listener 元素记录。最好在每次运行测试之前清除已经记录的数据。为此,可以在 JMeter 的 “Run” 菜单中选择 “Clear All”。清除测试的键盘快捷键是 CTRL+E,启动测试的快捷键是 CTRL+S。

在启动之后,右上角的两个数字旁边将有一个浅绿色的指示灯,这两个数字表示实际运行的线程数量和所配置的最大线程数量。举例来说,10/30 这两个数字表示有 10 个线程正在运行,而最大可运行的线程数量是 30 个。在初始启动阶段完成后,如果正在运行的线程数量低于最大线程数量,则您应检查线程是否已完成,或者因错误而停止。可在 Listener 元素中检查是否存在这种情况。

通常情况下,在启动测试之后,需要单击一个 Listener 元素来监视进度。Aggregate Report 是一种大体上的概览,而树会显示详细的信息。只需单击一个元素即可查看其内容。

“View Result Tree” 元素显示所发出的全部请求以及所收到的响应的树形视图。这个树是 “实时的”,因此将在测试运行过程中成长。

需要注意的一个要点在于,只有在请求已发送之后并且已收到响应的情况下,元素才会显示在此处。举例来说,如果您未看到初始 Login 元素,那么可能是因为您正在尝试连接到错误的 URL,而 Web 服务器的超时时间是 30 秒。

务必牢记,只有在收到响应时,也就是请求完成时,才会显示元素。您可以单击树中的每一个元素,右侧窗格将显示有关请求的信息,例如所发送的数据和所收到的响应。研究响应即可了解请求中出现了什么情况。

某些元素(例如分组的元素)没有响应,因为它们没有发出任何实际请求,而仅仅是构成测试计划请求。

如果结果树侦听器中的某个请求显示为红色,则表示该请求未成功,发出请求的线程已停止。此时请查看该请求的响应标签,该标签可以帮助您了解发生了什么事。

如果您查看编号,就会发现元素的顺序似乎被打乱,这是由于树是按照优先处理子元素、随后处理父元素的顺序进行处理的。因此,父元素将显示在最后,如下图所示。

图示 6:将响应显示为编号元素缩进列表形式的 Result Tree Listener 输出
图示 6:将响应显示为编号元素缩进列表形式的 Result Tree Listener 输出
图示 6:将响应显示为编号元素缩进列表形式的 Result Tree Listener 输出

以 Login 进程为例,您可以看到 Logon 操作包含两个单独的请求。自上向下地读取,有两个响应,向右缩进排列,并使用 x.y 或 x.y.z 等子编号标记,它们出现在表示 Logon 操作完成、标记为 “01-Logon” 的最终元素之前。“01-Logon” 元素允许您测量完成登录操作的时间。这种显示结果的方法适用于整个结果列表。“01- Login” 等总结元素使用不缩进的格式显示,从而为每项操作形成模块或组。

Aggregate Report Listener 将为每个独立测试元素显示单独的一行,为每行显示多个计时值,例如此测试元素的最小或最大时间、中值、平均值等。您可以了解一个元素的执行频率,以便确定您配置的所有线程是否已被某个元素传递。

图示 7:Aggregate Result Listener 输出 – 显示一个以响应元素作为行、以测量指标作为列的表格的示例
图示 7:Aggregate Result Listener 输出 – 显示一个以响应元素作为行、以测量指标作为列的表格的示例
图示 7:Aggregate Result Listener 输出 – 显示一个以响应元素作为行、以测量指标作为列的表格的示例

您可以轻而易举地从这里读取每项操作或子请求的计时。此外还有针对整体测试和三种数据访问类型的元素。

您可以使用 Run 菜单中的 Stop 命令或者按下 CTRL+.(圆点),随时停止测试。如果您运行大量线程,则测试可能需要一段时间才能停止。

在非常罕见的情况下,JMeter 会挂起。这种状态通常非常明显,尽管测试尚未完成,但 Listener 中的进度不再增加,线程可能无响应,右上角的指示灯熄灭。只需重新运行测试即可,不必为故障排除而烦恼。根据作者的经历来看,这种情况在一次会话中至多只会发生一两次,随着 JMeter 日益成熟,这样的问题也会随之消失。

结果解释

在测试完成后,最好观察 Aggregate Report Listener。它将保留有关各请求、各操作和整体测试的运行所占用的时间。其中还包括一些统计总数,例如中值、平均值等。这些计时指标将是性能的主要指标。

由于我们的目的在于稳定性,因此错误列显示的条目应为 0%。如果某行中存在错误,则错误列将显示 0% 以外的内容。切换到结果树,查看红色的条目。研究响应,并调整 IBM Cognos 10 配置或系统参数来处理其中的错误消息。

为了从结果中读取更多信息,您应对比不同设置的计时,例如更改网关类型,或者添加另外一个 Report Server。这将展现性能会受到怎样的影响。您应始终从某些基本测试入手。举例来说,在开始更改系统或配置以便对结果做出反应执行,请执行三次相同的测试。

考虑到稳定性,测试应始终在不出现任何错误的情况下完成。如果您看到特定的报告反复失败,则应集中精力处理这些报告,禁用其他报告。

测试可能显示出某些错误的事实不一定表示产品本身不稳定,而是表示需要采取进一步的措施来研究这些错误。大多数错误都可以通过调整配置得到解决,某些错误可能是系统瓶颈造成的结果。无论是哪种情况,在采取措施之前,都应查询附录 A 和 IBM Cognos 相关 Technote。搜索从响应中读取到的错误代码。如果不确定,请致电 IBM Support。

如果 BiBusTkServerMain 进程崩溃,留下了一个迷你转储(Windows)或一个核心(UNIX/Linux),您应立即与 IBM Support 联系,并记录一个案例,提供测试计划和配置。

总而言之,测试的结果将使您了解系统在某些环境下的稳定性。请务必牢记,本测试计划仅为样例,不能取代经过训练、经验丰富的 IBM Cognos 员工或合作伙伴运行严格性能和可伸缩性测试的现场服务。如果您需要有关稳定性和性能的可靠结论,请联系您的 IBM Cognos 代表,预约此类服务。

附录 A - 故障排除

本附录提供了一些最常见的错误消息,还提供了解决错误起因的提示。本附录并非完整指南,仅为快速参考。如需了解详细信息,请在 Technotes 中查找错误说明,或者联系 IBM 支持部门。

JMeter 错误

  • JMeter GUI 功能不全,Open 等部分菜单选项显示为灰色。控制台显示 Java 异常。
    措施:这是启动脚本导致的问题 (jmeter.bat/.sh),必须在脚本中予以修复。在 PATH 中可能有其他一些 JRE 在前。作者在脚本中调用 JRE 之前的位置添加了 set JM_LAUNCH=%JAVA_HOME%\bin\%JM_LAUNCH%,并在脚本开头处设置了 JAVA_HOME,从而修复了这个问题。
  • JMeter 无法启动。
    措施:确保您使用的是 JRE version 1.5 或 1.6。
  • JMeter UI 响应缓慢或完全不响应。
    措施:考虑在一台更强大的计算机上运行 JMeter,或者将线程(用户)数量限制在 20 至 30 之间。
  • 在 Result Tree Listener 中,测试计划元素 04、08、09 不包含任何获取图形的请求。
    措施:测试计划元素必须包含请求。举例来说,元素 09 应拉取四个图表。检查确认计划中的临时位置设置与 IBM Cognos 10 的临时对象位置配置相匹配。

IBM Cognos 出错,显示为请求结果的错误页面:

  • 错误:DPR-ERR-2002 无法执行请求,所配置的时限内无进程可用。服务器可能繁忙。
    措施:增加分派器队列超时时间。
  • 错误:RSV-ERR-0021 “服务器无法找到 ID 为 <someID> 的主请求。”
    措施:检查确认未超出应用服务器线程限制。

下载资源


相关主题


评论

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=810291
ArticleTitle=IBM Cognos 最佳实践: IBM Cognos 10.1 BI JMeter 稳定性测试
publish-date=04162012