本文将介绍如何优化 IBM Rational Performance Tester SAP Protocol Extension 和 SAP R/3 服务器,以便运行高负载测试。本文还提供了使用 Rational Performance Tester 执行 SAP 负载测试的最佳实践,以及性能测试人员在运行测试时遇到的一些常见问题的解决方案。 设置 SAP R/3 服务器的配置参数 SAP R/3 服务器中的默认配置无法支持较高的用户和事务负载。SAP 论坛有许多 SAP 管理员报告很难为生产系统达到所提议的最优配置。 通常,性能测试人员在运行负载测试时发现预生产环境中的应用服务器中存在瓶颈。如果在运行负载测试的同时创建与 SAP R/3 应用服务器的新连接,那么这些瓶颈就会导致错误。典型的结果包括: 连接异常Rational Performance Tester 用户界面错误连接超时这些结果可能在客户端或被性能测试工具错误地解释为问题。本节将讨论为了避免瓶颈而需要在 SAP R/3 服务器上执行一些常见配置。 最大并发会话数量 (CPIC_MAX_CONV) SAP 图形用户界面 (GUI) 客户端使用远程函数调用 (RFC) 通过 TCP/IP 套接字连接到 SAP R/3 应用服务器,使用 X/Open Standard Common Programming Interface - Communications (CPIC) 进行通信。通常,出现的第一个瓶颈在 CPIC 层中,甚至在应用服务器满载之前。性能测试遇到此瓶颈时,SAP 链接错误会开始在 Rational Performance Tester 中的 SAP Execution Event Console 中不断积累,并抛出异常 Max no of conversations of 100 exceeded。 MAX_CPIC_CONV 的默认值设置为 100。该值不足以处理较高的用户和事务负载。为了解决此问题,可依据事务复杂性和需要的并发性水平来增大该值。如果存在疑问,最初可将该值增加到 2,000。 MAX_CPIC_CONV 参数是在运行 SAP R/3 应用程序的操作系统的管理员用户环境中设置的。在 UNIX? 环境中,可以将 MAX_CPIC_CONV 设置为 .sapenv_sappib.csh 文件、.profile 文件或任何其他初始化 shell 脚本中的一个环境变量,供有权启动 SAP R/3 应用服务器的管理员用户使用。在 Windows 中,MAX_CPIC_CONV 被设置为管理员的配置文件中的一个环境变量。 SAP 网关和配置文件参数 为了与外部客户端或其他应用服务器进行交互,SAP 应用服务器安装了一个网关服务器的实例。通过 TCP/IP 从客户端应用程序向 SAP 应用服务器发出的远程过程调用 (RPC) 请求,通过一个 SAP 网关来路由。SAP 网关可与应用服务器在一起,或者可在独立模式中用于对 SAP R/3 服务器执行负载平衡。 内存管理和资源管理参数对实现高容量处理至关重要。 下表列出了需要调整才能支持高用户负载的常见网关内存和资源管理参数: 表 1. SAP 网关参数 这些参数的最佳值取决于多种因素,其中包括用户负载、事务量和事务性质。对于中等复杂度的测试,运行 1000 个虚拟用户的负载的 Rational Performance Tester 测试脚本使用以下值来完成了测试: gw/cpic_timeout = 20gw/max_conn = 5000gw/max_sys = 5000gw/max_overflow_size = 25000000gw/max_shm_req = 50rdisp/max_comm_entries = 5000rdisp/tm_max_no = 2000上述 SAP 网关和配置文件参数可在 SAP GUI 中使用 RZ10 事务来修改。 连接到 SAP R/3 服务器后,调用 RZ10 事务。在事务屏幕中,选择要修改的变量值所在的配置文件,然后单击 Change 按钮,如图 1 所示。 图 1. 在 RZ10 事务屏幕上修改 SAP R/3 参数 使用 RZ10 SAP 事务代码编辑配置文件 备注: 系统架构决定了要选择哪个配置文件。在具有单个应用服务器的 SAP R/3 系统上,可以选择 instance profile;而对于具有多个应用服务器的系统,应当选择 default profile。 事务中的下一个屏幕(如图 2 所示)显示了已在此配置文件中创建的参数列表。如果要更改的参数已在此屏幕中列出,可以双击打开参数修改屏幕。如果未列出该参数,那么可以使用 Parameter 按钮创建该参数。在图 3 中显示的参数修改屏幕中,输入要为该参数设置的值,然后单击 Copy 按钮将更改应用到配置文件。执行这些更改后无需重新启动 SAP 实例。 图 2. 参数列表和新参数的创建 维护 SAP R/3 服务器的配置文件参数 图 3. 修改一个 SAP 参数 修改 gw/max_overflow_size 配置 Rational Performance Tester for SAP 负载测试 要配置 Rational Performance Tester for SAP 负载测试,可以按照本节中的推荐进行操作。 部署 Rational Performance Tester 高容量 SAP 测试 使用以下指南来部署 Rational Performance Tester,以便执行高容量测试: 定义至少一个代理来驱动虚拟用户负载。 备注: 不要使用工作台(workbench)来生成虚拟用户负载。将 SAP GUI 软件安装在工作台上,用它来记录测试。将用户界面安装在所有负载生成代理机器上,使用它来驱动负载。执行所有 SAP 性能测试,首先从少数虚拟用户开始。执行有助于调试测试,确保相互关系和动态数据置换将适用于多个用户。请注意,在运行性能测试时,每个 SAP 虚拟用户都会在代理机器中生成一个 SAP GUI 会话。对于中等复杂度的 SAP 测试,一个负载生成代理可在每个代理上处理 25-30 个虚拟用户。如果测试计划中仅包含低复杂度 SAP 测试,那么一个代理可处理大约 50 个并行 SAP 会话,因此支持 50 个虚拟用户。对于需要更多虚拟用户的测试计划,能够以大约每个代理 30 个虚拟用户的速度线性地增加代理数量。可以采用 Rational Performance Tester 批量测试模式,使用 SAP Java Connector Objects (JCO) 库增大虚拟用户负载。因为运行 JCO 的 SAP 虚拟用户不会创建 SAP 用户界面会话,所以它们在客户端使用的资源更少。推荐使用批量测试来运行更高百分比的虚拟用户。在大部分实例的运行的性能测试中,可让 75% 的虚拟用户负载使用 SAP JCO 运行,让剩余 25% 的虚拟用户负载使用基于 SAP GUI 的虚拟用户。设置 SAP 性能测试的测试计划 按照本节中的操作进行说明,配置与 SAP 性能测试相关的参数。 选择要在一次性能测试运行中收集的统计数据 在 Rational Performance Tester 中,您可配置一个测试计划(如图 4 所示)来选择需要从代理收集的数据类型,应收集数据的频率(称为采样率),以及数据应从所有用户还是从一个代表性采样中收集。对于较高用户负载的测试计划,请仔细考虑哪些选项最适合您需要验证的性能需求。 图 4. 计划统计数据收集 设置统计数据收集的水平和间隔 对于较高的用户负载,可以将 Statistics log level 设置为 Primary test actions。此设置限制了代理和工作台上针对统计数据收集的处理开销。对于 SAP 测试,Primary Test Actions 选项包含所有测试计划操作和 SAP 屏幕。 运行一个测试计划时,报告会显示在测试运行期间定期刷新的信息。信息刷新频率取决于 Statistics sample interval 设置,如图 4 所示。Rational Performance Tester 中默认的 Statistics sample interval 为 5 秒。推荐采用 30 到 120 秒之间的值。 选择 Only store All Hosts statistics 复选框会减少存储的统计数据量。此设置使您能够对更大的负载测试更长的时间,而使用的内存要少得多。此设置的缺陷在于,在总体数据中,不能单独使用来自每个代理的统计数据。但是,在大型性能测试中,通常对此数据不感兴趣。 确定测试日志级别和采样信息 测试日志包含与一次测试期间发生的事件对应的元素。该数据可帮助测试人员在测试开发的初始阶段调试测试,确保在运行高用户负载测试时没有出现红色标记。 大型的虚拟用户负载通常在完成所有所有单个和最新叫用户负载测试的问题排除后运行。最好将数据收集设置为 Primary Test Actions 级别,如图 5 所示。在此级别上,除了与测试计划操作相关的事件之外,还包含以下操作: 测试裁定、测试启动和测试停止事件循环迭代启动和循环迭代停止事件事务启动和停止事件SAP 屏幕信息,比如 SAP 屏幕标题验证点图 5. 设置测试日志水平和采样信息 图 5. 设置测试日志水平和采样信息 设置测试计划内容和元素细节 要设置采样率,可以选择复选框 Only sample information from a subset of users,然后选择它的一个选项。您指定的数字或百分比适用于每个用户组。如果在远程位置运行用户组,那么您选择的数字或百分比会均匀地分布在远程位置上。对于高用户负载,应设置一个较低的值。 为所有虚拟用户隐藏用户界面 GUI 对于所有 SAP 负载测试,确保对所有虚拟用户和测试计划中的所有测试隐藏了 SAP GUI,如图 6 所示。 图 6. 在所有测试中隐藏 SAP 用户界面 GUI 选择复选框 Hide GUI during execution 其中长时间运行模式 测试超过 24 小时时,资源使用问题可能导致 SAP 客户端发生问题。长时间运行模式通过在多个进程中运行测试,可提高 SAP 协议的长持续时间测试的可靠性。 可在 Performance Schedule Editor 中为 SAP 测试计划启用长时间运行模式,如图 7 所示。 图 7. 启用长时间运行模式 启用长时间运行模式的 SAP 测试选项 对于长时间运行模式下的 SAP 测试,测试实例数量每次达到所提供的值时,都会启动一个新的 SAP 客户端进程。例如,对于使用图 7 中所示的设置的负载测试,只要运行的测试数量超过 100,就会启动一个新进程。 采用 SAP 负载测试最佳实践 启动负载测试之前,需要确保该测试在作为单一测试运行时,能够以可靠的、无错误的方式进行回放。 提高长持续时间测试的成功率 可以使用以下准则来改善长持续时间测试的运行: 使用至少具有 2GB RAM 和 10GB 空闲磁盘空间的代理计算机。各个代理应运行相同版本的 IBM Rational Performance Tester 和 Rational Performance Tester Agent。禁用代理计算机中的反病毒软件、屏保程序和自动更新程序。避免在测试运行期间将代理计算机用于其他用途。保持每次测试尽可能短,避免在每次测试中循环超过 10 次迭代,通过在测试计划中循环来实现想要的长运行时间。每个代理计算机不超过 20 或 30 个虚拟测试器,并留出几秒的思考时间。使用具有极少验证点的测试。 针对负载测试配置 SAP 客户端设置 根据以下建议来配置 SAP 客户端设置: 不要使用 SAP Signature Theme,如图 8 所示。取消选择 SAP GUI Options 页面上的 Activate animated focus 复选框,禁用所有动画,如图 8 所示。 图 8. SAP Signature Theme 和动画设置 SAP GUI 配置首选项 在 SAP 测试回放期间,避免单击鼠标。一个隐藏的 SAP GUI 窗口会解释鼠标单击,这会导致意外的行为。测试的设计应该让 Screen Throughput 计数器保持较低。推荐的屏幕吞吐量大约为每个代理每秒 1 个屏幕。设置 SAP 批量输入记录和回放 运行大容量测试时,通过运行 SAP 批量输入测试,增加受带虚拟用户的 SAP 客户端驱动的虚拟用户数量。批量输入测试使用 SAP JCO 库在较低级别上访问 SAP R/3 服务器。使用 JCO 库,Rational Performance Tester 能绕过 SAP GUI 界面,能够以少得多的内存和 CPU 资源使用来达到负载。可以在同一个测试计划中添加普通 SAP 测试和 SAP 批量测试。在这些测试计划中,批量输入测试的主要用途是:将更多负载加载到已加载了普通测试的 SAP R/3 服务器上。SAP 批量输入测试不能包含验证点或 SAP GUI 元素。因此,对于性能数据,需要依靠普通的 SAP 性能测试结果。 如果选择内置的记录器来捕获 SAP GUI 与 SAP R/3 服务器的交互,那么可以将批量测试记录在 SAP GUI 中。这如图 9 所示。记录器的一条规定是将捕获的数据写入了一个文本文件。 图 9. 可以在 SAP GUI 中用于批量输入测试的内置记录器 在 SAP GUI 中找到记录器工具 将该场景记录到 SAP GUI 中的一个批量输入文件中后,通过导入该批量输入文件在 Rational Performance Tester 中创建了一个新测试。单个批量输入测试可包含多个事务,如图 10 所示。 图 10. 从批量输入记录文本文件创建新的 SAP 测试 测试创建向导,其中使用了批量输入文本文件 可以在 Rational Performance Tester 中在测试级别上配置 JCO 连接属性,通过 JCO 库来控制并行连接,如图 11 所示。JCO 连接库提供了重用来自某个池的连接的选项。负载测试中的连接池有助于限制建立连接的开销成本,还有助于限制 SAP R/3 服务器和客户端中打开的连接数量。 图 11. Rational Performance Tester 中的 SAP JCO 连接 可配置的 SAP JCO Connection 参数 避免 SAP 负载测试中的常见陷阱 本节将介绍 SAP 负载测试中的一些常见问题,以及如何避免它们。 欲速则不达 通过单个虚拟用户完全排除记录的测试的故障,确保工作流和数据相互关系是准确的。然后,在一个最小的多用户场景(少于 5 个虚拟用户)中回放记录的测试,确保特定于用户的动态数据会被替换,并且会为所有用户成功执行该工作流。在最小负载下证明测试成功后,逐步增加测试计划负载,以达到需要的级别。随负载增加而执行增量度量的能力有助于识别负载瓶颈位于何处,提供有用的指示器来帮助定位瓶颈,确定它们是在 Rational Performance Tester 配置上还是与 SAP R/3 服务器相关。 错误:在回放 SAP 测试时出现 “Invalid Control ID” 在回放 SAP 测试时,常常会观察到错误 Invalid Control ID。当在一个不存在的 GUI 元素上调用一个方法时,SAP GUI 就会生成此错误。如果该元素还未呈现到 SAP GUI,则有可能出现这种情形。要避免此问题,可增加与 SAP 屏幕有关联的思考时间,或者在测试中插入足够的延迟来允许正确呈现屏幕。确保足够的加速率,让所有用户不会同时登录 SAP R/3 服务器并开始执行事务。 如果用户在记录时通过单击第一列以外的任何列,选择了来自一个模态对话框窗口的输入记录,那么也有可能发生此错误。图 12 显示了选择一个记录的正确方式。图 13 显示了错误的方式。 图 12. 使用第一列选择一个记录(正确) 在 GuiComboBox 上挑选各项的正确方式 图 13. 单击其他列来选择一个记录(错误) 在 GuiComboBox 上挑选各项的错误方式 在性能测试中加载不必要的模态对话框 在 SAP GUI 中,输入字段常常使用 SAP GUI 元素 GuiComboBox (F4) 从一个预定义的值集合中选择值。您可以单击 GuiComboBox 旁边的 Help 按钮,打开一个包含预定义的值的模态对话框窗口。从预定义的值中选择一个输入值。避免使用图 15 中所示的选项。请直接在文本框中输入所需的值,如图 14 所示。此方法有助于避免资源耗尽,但会打开不必要的 GUI 弹出窗口。 图 14. 需要的值的直接输入(推荐) 在 GUIComboBox 中输入值的推荐方式 图 15. 从模态对话框选择一个值(不推荐) 使用 F1 帮助来输入值,不推荐这么做 结束语 本文介绍了如何优化 SAP R/3 服务器和 Rational Performance Tester,以便运行高用户负载测试。此外,本文还介绍了在使用 Rational Performance Tester 对 SAP R/3 服务器执行性能测试时应采用的一些推荐最佳实践,以及常见的使用陷阱。
|