测试方案概述

本主题概述了测试应用程序;描述所使用的测试方法,并列出负载测试期间捕获的关键绩效指标(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 从测试负载代理计算机接收新的计算器请求。

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

  3. 入站请求启动 LogicalPortsOrchestration 的新实例。 此编排使用直接绑定端口接收 CalculatorRequest 消息,其中方法的提升属性为“LogicalPortsOrchestration”。

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

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

  6. WCF-BasicHttp 发射端口调用了计算器 WCF 网络服务所公开的一个方法(加、减、乘、除)。

  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) 测试版与 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)工具、重新记录和日志分析器工具,以生成统计信息、图表和报告。 有关 PAL、Relog 和日志分析器的详细信息,请参阅 附录 D:用于测量性能的工具

注释

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

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

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

  • 环境– 记录对哪个环境进行测试,是在物理硬件上的 BizTalk Server 或 Hyper-V 上的 BizTalk Server。

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

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

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

  • 开始时间 - 如第一个 VSTS 负载测试代理所报告的那样

  • 时间停止 - 如最后一个完成的 VSTS 负载测试代理报告的那样

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

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

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

  • 平均客户端延迟 - 记录测试负载代理客户端在负载测试期间启动请求并从 BizTalk Server 计算机收到响应之间的平均时间。

  • Request-Response 持续时间平均值(毫秒) -BizTalk:Messaging Latency\Request-Response Latency(秒) Performance Monitor 计数器为 BizTalkServerIsolatedHost 报告

    注释

    在运行多个虚拟化的 BizTalk 主机时,使用从日志中计算得出的这些计数器的平均值。

  • 每秒完成的业务流程完成数 -XLANG/s Orchestrations(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 处理/秒 计数器度量。

  • 延迟– 根据 VSTS 2008 负载测试控制器返回的度量值。

    SQL Server KPI

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

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

    网络 KPI

  • BizTalk Server 网络吞吐量 – 如通过 BizTalk Server 计算机上的性能监视器计数器 \网络接口(*)\字节总数/秒 所测量。

  • SQL Server 网络吞吐量 - 由 VSTS 2008 负载测试控制器返回的 SQL 网络接口\Bytes Total/sec(Avg) 度量。

    内存 KPI

  • 可用内存 - 根据 \Memory\Available Mbytes 计数器进行度量,适用于各种方案。

物理基础结构细节

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

对于所有服务器:

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

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

  • 经验证,系统已调整其设置,以优化系统属性中“性能选项”部分的“后台服务”性能。

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

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

    对于 SQL Server:

  • 根据提供的 https://go.microsoft.com/fwlink/?LinkId=141021安装指南安装 SQL Server。

  • 使用的 SQL Server 按照下表配置了 SAN LUN。 数据库和日志文件按照以下方法被分隔到不同的 LUN 中,以减少潜在的磁盘 I/O 争用:

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

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

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

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

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

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

    卷名 文件 LUN 大小 GB 主机分区大小 GB 群集大小
    数据系统 MASTER 和 MSDB 数据文件 10 10 64KB
    Logs_Sys MASTER 和 MSDB 日志文件 10 10 64KB
    Data_TempDb TempDB 数据文件 50 50 64KB
    临时数据库日志 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
    日志_BizTalk数据库 其他 BizTalk 数据库日志文件 20 20 64KB
    MSDTC 日志文件 5 5
  • 根据提供的 https://go.microsoft.com/fwlink/?LinkId=128383安装指南安装 BizTalk Server。

  • 配置系统后,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 虚拟机的基础。 在基础 VHD 映像上运行 Sysprep,以在将任何 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 可支持性