BizTalk Server 的 Low-Latency 方案优化

默认情况下,BizTalk Server针对吞吐量而不是低延迟进行优化。 以下优化应用于用于本指南的测试方案的BizTalk Server。

注意

这些优化将改善延迟,但这样做可能会降低总体吞吐量。

增加BizTalk Server主机内部消息队列大小

每个 BizTalk 主机都有自己的内部内存中队列。 将此队列的大小从默认值 100 增加到 1000,以提高低延迟方案的性能。 有关修改内部消息队列大小的值的详细信息,请参阅 帮助 BizTalk Server中的https://go.microsoft.com/fwlink/?LinkID=120225“如何修改默认主机限制设置”。

减少BizTalk Server管理数据库的adm_ServiceClass表中的 MaxReceiveInterval 值

BizTalk Server使用轮询机制从 Messagebox 中的主机队列接收消息。 BizTalk 管理 (BizTalkMgmtDb) 数据库的adm_ServiceClass表中的 MaxReceiveInterval 值是每个 BizTalk 主机实例在轮询 MessageBox 之前将等待的最大值(以毫秒为单位)。 adm_ServiceClass表包含以下服务类型的记录:

  • XLANG/S – 适用于 BizTalk 业务流程主机实例

  • 消息传送 InProcess – 适用于进程内主机实例

  • MSMQT – 适用于 MSMQT 适配器主机实例

  • 独立消息传送 – 适用于进程外主机实例,由 HTTP、SOAP 和某些 WCF 接收适配器处理程序使用

默认情况下,此值设置为 500 毫秒,针对吞吐量而不是低延迟进行优化。 在某些情况下,可以通过减少此值来改善延迟。

注意

对此值的更改会影响关联服务类型的所有实例,因此,在更改此值之前,请务必评估对所有主机实例的影响。

仅当 Messagebox 没有剩余的未处理邮件时,才使用此值。 如果 Messagebox 中不断积压未处理的邮件,BizTalk Server将尝试处理这些消息,而无需等待轮询延迟。 处理完所有消息后,BizTalk Server将使用为 MaxReceiveInterval 指定的值开始轮询。

在主机实例与 Messagebox 数据库实例比率较高的BizTalk Server环境中,减小 MaxReceiveInterval 的值可能会导致托管 Messagebox 数据库实例的SQL Server计算机上的 CPU 使用率过高。 例如,如果在具有单个 Messagebox 和 <> 50 个主机实例的BizTalk Server环境中将 MaxReceiveInterval 降为 100) (低值,则SQL Server的 CPU 利用率可能会攀升至 50% 以上。 之所以出现这种现象,是因为与持续轮询主机队列相关的开销很大。 如果将 MaxReceiveInterval 减少到小于 100 的值,则还应评估这会对SQL Server计算机的 CPU 利用率的影响。