观测和建议

测试结果摘要

观察到仅消息传递方案的结果为每天约 109,382,400 条消息。 对于业务流程方案,结果表明运行BizTalk Server的单台计算机每天最多可处理 58,752,000 条消息。 这些结果是在沙盒环境中实现的,这些硬件使用为许多BizTalk Server解决方案部署的普通企业级硬件。 因此,这些结果指示无需自定义代码即可实现的BizTalk Server性能的类型。 客户解决方案通常涉及自定义开发的 BizTalk 项目;在许多情况下,这会增加处理要求,进而影响性能。 遵循本指南中提供的建议,特别是优化BizTalk Server应用程序部分,可以最大程度地降低实现自定义开发的BizTalk Server项目的影响。

下表汇总了此性能评估的测试结果。

方案 消息传送 (BizTalk KPI - 每秒处理的文档数) 消息传送 (SQL KPI - SQL 处理器利用率) 消息传送延迟 (秒) BizTalk KPI (业务流程 - 每秒处理) 的文档数 业务流程 (SQL KPI - SQL 处理器利用率) 业务流程延迟 (秒)
单一 MessageBox 1 BizTalk Server计算机 每秒处理 1266 个文档 59% SQL CPU 利用率 0.06 每秒处理 680 个文档 66.5% SQL CPU 利用率 0.067
单一 MessageBox 2 BizTalk Server计算机 每秒处理 1267 个文档 59.8% SQL CPU 利用率 0.057 每秒处理 686 个文档 68.5% SQL CPU 利用率 0.067
3 MessageBox 1 BizTalk Server计算机 每秒处理 2102 个文档 41% SQL CPU 利用率 0.077 每秒处理 974 个文档 48% SQL CPU 利用率 0.11
3 MessageBox 2 BizTalk Server计算机 每秒处理 2285 个文档 58% SQL CPU 利用率 0.041 每秒处理 1065 个文档 65% SQL CPU 利用率 0..69
4 MessageBoxes 1 BizTalk Server计算机 每秒处理 2125 个文档 30% SQL CPU 利用率 0.078 每秒处理 979 个文档 37% SQL CPU 利用率 0.095
4 MessageBoxes 2 BizTalk Server计算机 每秒处理 2790 个文档 50% SQL CPU 利用率 0.052 每秒处理 1487 个文档 63% SQL CPU 利用率 0.15
4 MessageBoxes 3 BizTalk Server计算机 每秒处理 2656 个文档 58% SQL CPU 利用率 0.074 每秒处理 1388 个文档 65% SQL CPU 利用率 0.15

性能统计信息与 2009 BizTalk Server比较

下表显示了BizTalk Server 2009 年至 2010 BizTalk Server之间的性能统计信息的比较。 此表中列出的BizTalk Server 2009 年性能统计信息来自BizTalk Server 2009 性能和优化指南。

方案 BizTalk Server 2009
最大可持续吞吐量 (MST) msgs/秒
BizTalk Server 2009
所需的 BizTalk 服务器数
BizTalk Server 2010
最大可持续吞吐量 (MST) msgs/秒
BizTalk Server 2010
所需的 BizTalk 服务器数
与 2009 BizTalk Server 2010 BizTalk Server % 差异
消息传送 - 单个 MessageBox 1291 2 1266 1 98.06%
业务流程 - 单个 MessageBox 676 2 680 1 100.59%
消息传送 - 3 个 MessageBox 2103 3 2285 2 (2102/秒,1 个 BTS) 108.65%
消息传送 - 4 个 MessageBox 不适用 不适用 2790 2 不适用
业务流程 - 3 个 MessageBox 1005 4 1065 2 (974/秒,1 个 BTS) 105.97%
业务流程 - 4 个 MessageBox 不适用 不适用 1487 2 不适用

在我们的实验室环境中,使用四个 MessageBox 数据库时,最大可持续吞吐量结果如下所示:

  • 对于消息传送方案,每秒 2790 个文档。

  • 对于业务流程方案,每秒 1487 个文档。

    消息注意事项虽然BizTalk Server对消息大小没有限制,但我们为 BizTalk Server 2010 运行的测试仅使用 2 KB 的消息,并且使用的 WCF 适配器的类型 WCF-NetTCP 适配器。 这与BizTalk Server 2009 性能优化指南的测试中使用的消息大小和适配器类型相匹配。

    性能改进的驱动因素包括:

  1. 硬件改进 - 实验室中使用的SQL Server计算机是 4-CPU、四核 (16 核) ,Intel Xeon E7330 @ 2.40 GHz。 在 2009 年的测试中,使用了 4 个 CPU、四核 (16 个核心) ,Intel Xeon 2.4 GHz。

    我们实验室中使用的BizTalk Server台计算机是 2-CPU、四核 (8 核) 、Nehalem Hyper-Threaded (16 个逻辑核心) 、Intel Xeon X5570 @ 2.93 GHz。 在 2009 年的测试中,使用了 2-CPU、四核 (8 核) 、Intel Xeon 2.33 GHz。

  2. 改进SQL Server引擎 - 2009 年的测试针对 SQL Server 2008 执行,而我们的测试是使用 SQL Server 2008 R2 作为基础数据库平台执行的。

有关缩放BizTalk Server层和SQL Server层的建议

通过这些结果,BizTalk Server产品团队能够证明,在 24 小时内,一台BizTalk Server计算机和一台SQL Server计算机可以在消息传送方案中支持超过 1.09 亿条消息和 5,800 万个业务流程。 通过将BizTalk Server层和 SQL 层扩展到环境中可用的最佳配置,我们每天能够处理超过 2.41 亿条消息和超过 1.28 亿个业务流程。 使用许多企业中部署的硬件类在沙盒环境中执行结果。 如前所述,这些数字表示无需自定义代码和优化环境即可实现BizTalk Server的实际性能。 使用额外的硬件,有可能实现更高的性能。 客户解决方案通常涉及自定义开发的 BizTalk 项目,这些项目会产生额外的处理要求,从而提高资源利用率,进而降低整体性能。 但是,遵循本指南中概述的建议,特别是优化BizTalk Server应用程序中的建议,可以最大程度地降低其影响。

结果表明,如果 MessageBox SQL Server 计算机不是瓶颈,则横向扩展BizTalk Server计算机的数量是一种有效的横向扩展策略。 在某一点之后,我们的结果表明,添加BizTalk Server计算机成为无效的横向扩展技术,因为我们观察到,在 MessageBox 数据库中的共享表上出现了争用点,这导致性能下降。 若要最大化可从具有单个 MessageBox 数据库的BizTalk Server组获得的结果,应应用优化数据库性能中所述的优化。 具体而言,应确保快速存储子系统用于SQL Server存储,并且SQL Server用于存储 MessageBox 数据库文件的逻辑磁盘在尽可能短的时间内做出响应。 用于测量可接受的读/写性能的常用阈值为 15 毫秒;这通常由可在逻辑磁盘性能对象下找到的 Avg. Disk sec/Read 和 Avg. Disk sec/Write 计数器来度量。 将所有可用的优化应用到托管 MessageBox 数据库的SQL Server计算机后,可以添加其他 MessageBox 数据库。 应用于主 MessageBox 数据库的相同优化技术也应应用于辅助数据库。 建议遵循BizTalk Server文档中横向扩展SQL Server层 (https://go.microsoft.com/fwlink/?LinkID=158075) 中的准则。

若要获得最佳结果,整个硬件和软件堆栈需要质量适当,并且配置正确。 首先,应购买优质硬件,包括但不限于千兆网络、快速存储 (SAN 或 15-K 本地 SQL 磁盘) ,以及具有多个 CPU 且每个 CPU 具有多个内核的新式计算机。 SQL Server计算机应仅用于BizTalk Server处理。 运行单个SQL Server计算机时,建议创建两个 SQL 实例,一个用于 BizTalk MessageBox,另一个用于所有其他数据库。 这样就可以配置实例范围的设置,以优化 MessageBox 的性能。 优化性能中建议的优化应按以下顺序逐步应用:优化操作系统性能优化网络性能预配置数据库优化2配置后数据库优化2常规BizTalk Server优化1。 如优化数据库文件组 2 中所述,为 MessageBox 数据库创建专用 文件组并在 SAN LUN 中分配这些文件组,可以根据 SAN 配置和 LUN 布局提供相当大的性能改进。

若要有效地确定如何缩放BizTalk Server或 SQL 层,我们建议使用近似实际生产数据的消息执行负载测试。 在缩放BizTalk Server层之前,请确保SQL Server不是瓶颈,如监视SQL Server性能中的建议。 如果SQL Server不是瓶颈,并且任何BizTalk Server计算机上都有 CPU 余量,则可以通过修改主机实例布局来提高吞吐量。 必须建立四到五个关键绩效指标 (KPI) ,这些指标用作所有测试运行的高级比较点。 按照此建议,你将能够快速评估特定更改是否降低了解决方案的整体性能。

在横向扩展SQL Server层之前,请应用优化数据库性能中的所有优化。 在客户性能实验室过程中,观察到 MessageBox 和 TempDb 数据库的磁盘存储配置可提供超过 30% 的吞吐量提升。 缩放到多个 MessageBox 数据库时,使用了三个和四个 MessageBox 数据库,因为从单个 MessageBox 数据库横向扩展到两个 MessageBox 数据库时,性能优势不大。 有关横向扩展 BizTalk Server MessageBox 的详细信息,请参阅BizTalk Server文档中的横向扩展SQL Server层https://go.microsoft.com/fwlink/?LinkID=158075 () 。

已实现优化

本部分提供适用于实验室测试方案的所有优化清单。

注意

在生产环境中应用这些过程之前,应根据更改管理过程进行测试。

以系统、受控的方式应用优化(通过应用一组优化,然后测试影响)将产生最大的性能优势。 应用优化而不定期测试优化的影响实际上可能会导致解决方案的性能下降。

应用的优化清单

平台和网络优化

Optimization 参考
BIOS:配置性能设置。 优化操作系统性能
对SQL Server文件禁用实时扫描。 优化操作系统性能
在所有BizTalk Server和SQL Server计算机上启用“高性能”电源计划。 优化操作系统性能的通用指南
在所有BizTalk Server和SQL Server计算机上禁用防病毒。 优化操作系统性能的通用指南

SQL Server优化:常规

Optimization 参考
将 NTFS 文件分配单元设置为 64 KB。 预配置数据库优化 2
安装 SQL Server 2008 R2。 预配置数据库优化 2
配置 SQL Server 2008 R2 数据收集器/仓库。 预配置数据库优化 2
确保适当的 Windows 特权已扩展到 SQL Server 服务帐户。 SQL Server 2008 R2:设置 Windows 服务帐户 (https://go.microsoft.com/fwlink/?LinkID=132144)
设置SQL Server的最小和最大服务器内存。 预配置数据库优化 2
向用于SQL Server的帐户授予 Windows 锁内存页权限。 预配置数据库优化 2
将BizTalk Server数据库大小预先调整为具有多个数据文件的适当大小。 配置后数据库优化 2
配置SQL Server客户端协议。 SQL Server (https://go.microsoft.com/fwlink/?LinkID=154250) 疑难解答
在BizTalk Server使用的每个SQL Server实例上,将 tempdb 数据库拆分为多个大小相等的数据文件 预配置数据库优化 2
手动设置SQL Server进程相关性 预配置数据库优化 2
配置 MSDTC 并禁用 DTC 跟踪 预配置数据库优化 2
为所有SQL Server实例启用跟踪标志 T1118 作为启动参数 预配置数据库优化 2

SQL Server优化:BizTalk 数据库

Optimization 参考
将 BizTalk 数据库的自动增长设置为固定值,而不是百分比值。 配置后数据库优化 2
将 BizTalk 数据库数据和日志文件移动/拆分到单独的 LUN。 配置后数据库优化 2
考虑在特定 MessageBox 数据库表上设置“行中文本”表选项 配置后数据库优化 2

BizTalk 优化

Optimization 参考
在单独的专用主机上分离接收端口、发送端口、业务流程和跟踪。 常规BizTalk Server优化1
配置轮询间隔。 低延迟方案优化 2
调整 BizTalk 配置文件的最大连接属性。 常规BizTalk Server优化1 的“通过更改 maxconnection 参数的值增加允许的 SOAP 和 HTTP 并发连接数”部分
为每个BizTalk Server节点上的每个主机实例定义 CLR 宿主参数:

最大 IO 线程数:250

最大工作线程数:100

最小 IO 线程数:25

最小辅助角色线程数:25
常规BizTalk Server优化1 的“定义 BizTalk 主机实例的 CLR 托管线程值”部分
将进程内消息和内部消息队列大小增加到 10000。 低延迟方案优化 2
禁用BizTalk Server组级跟踪。 常规BizTalk Server优化1
管理 ASP.NET 4 个 Web 应用程序的并发执行请求数,这些应用程序可以托管独立接收的位置、后端 Web 服务和在集成模式下运行的 IIS 7.5 和 IIS 7.0 上的 WCF 服务 常规BizTalk Server优化1
禁用BizTalk Server主机限制 常规BizTalk Server优化1
配置 MSDTC 并禁用 DTC 跟踪 常规BizTalk Server优化1

WCF 配置优化

Optimization 参考
对于每个 WCF 服务,应用 serviceThrottling 服务行为,并将 maxConcurrentCallsmaxConcurrentSessions 设置为 200。 优化 BizTalk Server WCF 适配器性能
在后端 WCF 服务配置文件中配置 serviceThrottling 行为的用法。 优化 WCF Web 服务性能

另请参阅

缩放 BizTalk Server 生产环境