测试方案概述

本主题概述了测试应用程序;描述所使用的测试方法,并列出在负载测试期间) 捕获的关键绩效指标 (KPI。

测试应用程序

使用同步请求-响应应用程序将 Hyper-V 上运行的BizTalk Server的性能与在物理硬件上运行BizTalk Server的性能进行比较。 此应用程序用于演示已针对低延迟优化BizTalk Server解决方案的性能。 对于某些场景(例如,网上银行)而言,低延迟消息传送至关重要,其中客户端发送请求并期望在非常短的间隔内 (响应消息,例如 < 3 秒) 。

下图演示了所使用的高级体系结构。 Visual Studio Team System (VSTS) 2008 测试负载代理调用了自定义测试类,该类使用 WCF 传输生成针对BizTalk Server的负载。 此方案中BizTalk Server应用程序是通过请求-响应接收位置 WCF-BasicHttp 公开的。 VSTS 2008 测试负载代理用作测试客户端,因为它提供了极大的灵活性,包括配置发送的消息总数、同时线程数以及发送的请求之间的睡眠间隔的功能。

可以同时运行多个 VSTS 2008 测试负载代理计算机来模拟实际负载模式。 对于这些测试,VSTS 2008 测试负载代理计算机由同时运行 BizUnit 3.0 的单个 VSTS 2008 测试负载代理控制器计算机驱动。 因此,向物理和虚拟BizTalk Server计算机发送了一致的负载。 有关使用 VSTS 2008 测试版生成用于测试的模拟负载的详细信息,请参阅 https://go.microsoft.com/fwlink/?LinkID=132311

应用程序体系结构 测试应用程序体系结构

  1. WCF-BasicHttp 或 WCF-Custom Request-Response 接收位置从测试负载代理计算机接收新的 CalculatorRequest。

  2. XML 反汇编程序组件提升 CalculatorRequest xml 文档中的 Method 元素。 消息代理将传入消息提交到 MessageBox 数据库 (BizTalkMsgBoxDb) 。

  3. 入站请求启动 LogicalPortsOrchestration 的新实例。 此业务流程使用直接绑定端口接收 Method promoted 属性 = “LogicalPortsOrchestration” 的 CalculatorRequest 消息。

  4. LogicalPortsOrchestration 使用循环来检索操作,对于每个项,它使用逻辑 Solicit-Response 端口调用下游计算器 WCF Web 服务。 计算器 WCF Web 服务的请求消息是使用帮助程序组件创建的,并发布到 MessageBox。

  5. 请求消息由 WCF-BasicHttp 发送端口使用。

  6. WCF-BasicHttp 发送端口调用计算器 WCF Web 服务公开 (加、减、乘、除) 的方法之一。

  7. 计算器 WCF Web 服务返回响应消息。

  8. 响应消息将发布到 MessageBox。

  9. 响应消息将返回到调用方 LogicalPortsOrchestration。 业务流程对入站 CalculatorRequest xml 文档中的每个操作重复此模式。

  10. LogicalPortsOrchestration 将 CalculatorResponse 消息发布到 MessageBox。

  11. 响应消息由接收位置 Request-Response WCF-BasicHttp 检索。

  12. 响应消息将返回到负载测试代理计算机。

    负载测试期间使用的业务流程的屏幕截图如下所示:

注意

为了便于说明,下面描述的业务流程是在负载测试期间实际使用的业务流程的简化版本。 负载测试期间使用的业务流程包括多个范围、错误处理逻辑和其他端口类型。

测试应用程序业务流程 测试应用程序业务流程

测试方法

性能测试涉及许多任务,如果手动执行这些任务,则重复、单调且容易出错。 为了提高测试效率并提供测试运行之间的一致性,Visual Studio 2013 Team System (VSTS) Test Edition 与 BizUnit 3.0 配合使用来自动执行测试过程中所需的任务。 VSTS 2008 测试负载代理计算机用作测试客户端来生成针对系统的消息负载,并且在每个测试运行中使用相同的消息类型来提高一致性。 遵循此过程为每个测试运行提供一组一致的数据。 有关 BizUnit 3.0 的详细信息,请参阅 https://go.microsoft.com/fwlink/?LinkID=85168。 有关 Visual Studio 2013 Team System Test Edition 的详细信息,请参阅 https://go.microsoft.com/fwlink/?LinkID=141387

以下步骤是自动化的:

  • 停止 BizTalk 主机。

  • 清理测试目录。

  • 重启 IIS。

  • 清理BizTalk Server Messagebox 数据库。

  • 请重新启动 SQL Server。

  • 清除事件日志。

  • 为每个运行创建一个测试结果文件夹,以存储关联的性能指标和日志文件。

  • 启动 BizTalk 主机。

  • 加载性能监视器计数器。

  • 使用较小的负载预热 BizTalk 环境。

  • 通过代表运行发送。

  • 将性能日志写入结果文件夹。

  • 收集应用程序日志并写入结果文件夹中的 .csv 文件。

  • 针对收集的性能日志运行日志性能分析 (PAL) 工具、Relog 和 Log Parser 工具,以生成统计信息、图表和报告。 有关 PAL、Relog 和日志分析器的详细信息,请参阅 附录 D:用于衡量性能的工具

注意

所有跟踪都已禁用,BizTalk Server SQL Server 代理作业在测试期间被禁用。

为了确保此实验室的结果能够比较物理和 Hyper-V 环境中BizTalk Server的性能,每次测试运行都会在集中位置收集性能指标和日志。

测试客户端用于为每个测试运行创建唯一的结果目录。 此目录包含测试所需的所有性能日志、事件日志和关联数据。 当需要对以前的测试运行进行追溯分析时,此方法提供了所需的信息。 每次测试结束时,原始数据都编译为一组一致的结果和关键绩效指标, (KPI) 。 收集物理和虚拟机的一致结果集提供了不同测试运行和不同环境之间所需的比较点。 收集的数据包括:

  • 环境–若要记录运行测试的环境,请在物理硬件上或 Hyper-V 上BizTalk Server BizTalk Server。

  • 测试运行编号 – 唯一标识每个测试运行

  • 测试用例 -记录测试期间使用的BizTalk Server解决方案的体系结构。 (例如,使用逻辑端口的业务流程与使用内联发送的业务流程)

  • 日期– 记录测试的运行日期和时间

  • 开始时间 – 启动的第一个 VSTS 负载测试代理报告

  • 停止时间 – 最后一个 VSTS 负载测试代理报告完成

  • 测试持续时间(以分钟为单位) - 记录测试的持续时间。

  • 发送的消息总数 –记录测试期间从加载代理计算机发送到BizTalk Server计算机的消息总数。

  • 每秒发送的消息数 -记录测试期间每秒从加载代理计算机发送到BizTalk Server计算机的消息。

  • 平均客户端延迟 –记录测试负载代理客户端在负载测试期间向BizTalk Server计算机发起请求和从BizTalk Server收到响应之间的平均时间。

  • 请求-响应持续时间平均 (ms) –BizTalk:Messaging Latency\Request-Response Latency (sec) BizTalkServerIsolatedHost 的 性能监视器 计数器报告

    注意

    其中,多个虚拟化 BizTalk 主机运行这些计数器的平均值(根据日志计算得出)。

  • 每秒完成的业务流程数 -根据 XLANG/s 业务流程 (BizTalkServerApplication) \Orchestrations completed/sec 性能监视器 计数器报告。 此计数器很好地度量了BizTalk Server解决方案的吞吐量。

  • 3 秒已处理 < 消息的百分比 – 记录测试期间 3 秒内处理的消息总数。

    VSTS 2008 负载测试用于在所有测试中生成一致的负载。 测试期间修改了以下测试运行设置和负载模式,以调整每个测试的负载配置文件:

  • 测试运行设置

    以下测试运行设置已根据要执行的测试进行了修改:

    • 运行持续时间 - 指定测试的运行时间。

      测试运行设置 测试运行设置

  • 测试模式设置

    以下测试模式设置已根据正在执行的测试进行了修改:

    1. 模式– 指定在负载测试期间如何调整模拟的用户负载。 负载模式基于 常量步骤目标 。 执行的所有负载测试都是常量或步骤。

      注意

      出于本指南的目的执行的所有测试都使用 常量 负载模式或 步骤 负载模式。 常量加载模式和步骤加载模式提供以下功能:

      • 常量负载模式 – 负载模式在测试期间相同,模拟用户数从预定义级别开始,不会更改。
        • 步骤加载模式 – 负载模式在测试运行期间增加;模拟用户数从预定义级别开始,并在测试期间按预定义间隔按预定义的间隔递增。
    2. 常量用户计数 (恒定负载模式) – 针对 Visual Studio 负载测试项目的 app.config 文件中指定的终结点地址生成负载的虚拟用户数。 此值在用于负载测试的负载模式设置中指定。

    3. 初始用户计数 (步骤加载模式) – 在步骤负载模式测试开始时针对指定的终结点地址生成负载的虚拟用户数。 此值在用于负载测试的负载模式设置中指定。

    4. 最大用户计数 (步骤加载模式) – 在步骤负载模式测试结束时,针对指定的终结点地址生成负载的虚拟用户数。 此值在用于负载测试的负载模式设置中指定。

    5. 步骤持续时间 (步骤加载模式) – 虚拟用户针对负载测试步骤的指定终结点地址生成负载的秒数。

    6. 步骤用户计数 (步骤加载模式) – 使用步骤加载模式时,每个步骤要增加的虚拟用户数。

      测试模式设置 测试模式设置

    有关在 Visual Studio 2013 中使用负载测试的详细信息,请参阅 Visual Studio 2013 Team System 文档中https://go.microsoft.com/fwlink/?LinkId=141486的主题使用负载测试

测试期间测量的关键绩效指标

以下性能监视器计数器被捕获为所有测试运行的关键绩效指标 (KPI) :

注意

有关使用性能监视器计数器评估性能的详细信息,请参阅 清单:在 Hyper-V 上测量性能

BizTalk Server KPI

  • 每秒处理的文档数 –BizTalk:Messaging/Documents processed/Sec 计数器度量。

  • 延迟–以 VSTS 2008 Load Test Controller返回的度量值。

    SQL Server KPI

  • SQL Server处理器利用率 –SQL\Processor (总) \%处理器时间计数器测量。 此计数器测量SQL Server计算机上SQL Server处理的 CPU 利用率。

  • Transact SQL 命令处理性能 -\SQL Server:SQL Statistics\Batch Requests/sec 计数器度量。 此计数器测量每秒收到的 Transact-SQL 命令批处理数。 此计数器用于测量SQL Server计算机上的吞吐量。

    网络 KPI

  • BizTalk Server网络吞吐量 - 由BizTalk Server计算机上的 \Network Interface (*) \Bytes Total/sec 性能监视器计数器测量。

  • SQL Server网络吞吐量 – 由 VSTS 2008 Load Test Controller返回的 SQL 网络接口\字节总数/秒 (平均) 度量。

    内存 KPI

  • 可用内存 – 根据各种方案的 \Memory\Available Mbytes 计数器测量。

物理基础结构具体说明

对于已安装的每个服务器,调整了以下设置。

对于所有服务器:

  • 分页文件设置为分配的物理内存量的 1.5 倍。 通过确保初始大小和最大值以 MB 为单位相同,将分页文件设置为固定大小。

  • 已从高级系统属性屏幕中选择“调整以获取最佳性能”性能选项。

  • 在“系统属性”的“性能选项”部分中,验证了系统是否已调整为后台服务的最佳性能。

  • Windows Server 2008 SP2 作为来宾操作系统安装在每个虚拟机上。

  • Windows 更新已成功在所有服务器上运行以安装最新的安全更新。

    对于 SQL Server:

  • SQL Server已按照 上https://go.microsoft.com/fwlink/?LinkId=141021提供的安装指南安装。

  • 使用SQL Server已根据下表配置 SAN LUN。 数据库和日志文件跨 LUN 分离,如下所示,以减少可能的磁盘 I/O 争用:

    • Data_Sys卷用于存储除 MessageBox 和 TempDb 数据库以外的所有数据库文件 (包括系统和 BizTalk 数据库) 。

    • Log_Sys卷用于存储除 MessageBox 和 TempDb 数据库以外的所有日志文件 (包括系统和) BizTalk Server数据库。

    • Data_TempDb卷用于存储 TempDb 数据库文件。

    • Logs_TempDb卷用于存储 TempDb 日志文件。

    • MessageBox 数据库文件存储在Data_BtsMsgBox卷上,日志文件存储在Log_BtsMsgBox卷上。

  • 除此之外,还为 MSDTC 日志文件提供了单独的 LUN。 在高吞吐量 BizTalk 系统上,如果 MSDTC 日志文件活动与操作系统位于同一物理驱动器上,则表明它会导致 I/O 瓶颈。

    卷名 文件 LUN 大小 GB 主机分区大小 GB 群集大小
    Data_Sys MASTER 和 MSDB 数据文件 10 10 64KB
    Logs_Sys MASTER 和 MSDB 日志文件 10 10 64KB
    Data_TempDb TempDB 数据文件 50 50 64KB
    Logs_TempDb TempDB 日志文件 50 50 64KB
    Data_BtsMsgBox BizTalkMsgBoxDb 数据文件 300 100 64KB
    Logs_BtsMsgBox BizTalkMsgBoxDb 日志文件 100 100 64KB
    Data_BAMPrimaryImport BAMPrimaryImport 数据文件 10 10 64KB
    Logs_BAMPrimaryImport BAMPrimaryImport 日志文件 10 10 64KB
    Data_BizTalkDatabases 其他 BizTalk 数据库数据文件 20 20 64KB
    Logs_BizTalkDatabases 其他 BizTalk 数据库日志文件 20 20 64KB
    N/A MSDTC 日志文件 5 5 N/A
  • BizTalk Server是按照 上https://go.microsoft.com/fwlink/?LinkId=128383提供的安装指南安装的。

  • BizTalk Server最佳做法分析器 (BPA) 工具用于在配置系统后执行平台验证。 BizTalk Server (https://www.microsoft.com/download/details.aspx?id=43382) 。

虚拟化细节

使用单个 50 GB 固定 VHD 来托管每个 Hyper-V 虚拟机的操作系统。

已使用固定的 VHD 而不是动态调整大小的 VHD,因为它们会立即将 VHD 的最大存储分配给托管它的驱动器上的文件。 这可以减少 VHD 文件在托管它的物理驱动器上发生的碎片,从而提高磁盘 I/O 性能。

若要设置虚拟机,请在单个 VHD 上安装 Windows Server 2008 SP2 64 位版本。 安装所有适当的更新后,将使用随 Windows Server 2008 SP2 一起安装的 sysprep 实用工具在 %WINDIR%\system32\sysprep 目录中创建基础虚拟机映像。

然后复制此基本 VHD,并将其用作跨环境部署的所有 Hyper-V 虚拟机的基础。 Sysprep 是在基础 VHD 映像上运行的,用于在将任何SQL Server或BizTalk Server二进制文件部署到系统之前重置系统安全标识符。

注意

在服务器上安装和配置BizTalk Server后运行 Sysprep 可以通过使用随 BizTalk Server提供的 Sysprep 应答文件和脚本来完成。 这些示例脚本仅用于安装在 32 位和 64 位版本的 Windows Server 2008 SP2 上的BizTalk Server。 有关详细信息,请参阅BizTalk Server联机文档。

无人参与的 Windows 安装程序参考在 中提供 https://go.microsoft.com/fwlink/?LinkId=142364

另请参阅

附录 C:BizTalk Server 和 SQL Server Hyper-V 支持性