什么是主机限流?

在 BizTalk 服务器上发生的大多数处理都发生在称为 BizTalk Server 主机实例的逻辑实体内,该实例是作为 Windows 服务运行的进程,或者是 BizTalk 服务器上的独立主机进程。 为了通过主机实例进程管理资源的使用,BizTalk Server 利用一种可调整的限制机制,通过主机实例控制消息的流和处理。

调节机制调节主机实例的工作负荷,以确保工作负荷不会超过主机实例或任何下游主机实例的容量。 限制机制还阻止了一种称为资源争用的条件,该条件可以降低主机实例进程或其他系统进程的整体性能。 当一个或多个进程使用有限的资源来损害自身和/或另一个进程时,会发生资源争用。 例如,消耗过多的内存或线程可能会导致内存分配失败或线程上下文切换过高,这可能会影响进程的性能。 此类资源争用可能会损害 BizTalk Server 的整体性能。

主机限制机制还会检测可用资源何时被利用不足。 如果可用资源未充分利用,则限流机制允许主机实例处理其他消息。 主机限制机制会持续监视可用资源是否超过或未充分利用,并相应地调整消息流。

BizTalk Server 主机限制机制有助于确保系统在最佳且可持续的级别运行。

主机限制配置参数在 BizTalk Server 管理控制台中按主机设置。 请注意,为主机设置的限制配置参数适用于位于相应主机实例中的任何或所有接收处理程序、发送处理程序或业务流程。 如果要设置仅应用于特定接收处理程序、发送处理程序或编排的限流参数,则应执行以下操作:

  • 创建新的主机并相应地设置限制参数。

  • 配置要在此主机中运行的接收处理程序、发送处理程序或业务流程。

  • 创建此主机的一个或多个实例,以在 BizTalk 服务器上运行。

入站主机限速

入站主机限制(也称为 BizTalk Server 中的 消息发布限制 )应用于包含将消息发布到 MessageBox 数据库的接收适配器或业务流程的主机实例。 可以在以下条件下触发入站主机限流条件:

  • 内存量、线程数或主机实例使用的数据库连接数超过了 BizTalk 组提供的“设置”仪表板中定义的限制阈值,并选择“设置”。 可以使用 BizTalk:Message Agent 性能对象类别下提供的性能监视器计数器来衡量这些值。

  • 下游主机无法处理已发布的消息。 这会增加 DB 参数中消息计数 的值。 在设置仪表板中的Hosts选项上,可以配置触发限制条件的数据库中消息计数值的阈值。 可以使用 BizTalk:Message Agent 性能对象类别下的“数据库大小”计数器测量数据库中的消息计数。

  • 主机实例 的消息发布传入速率 超过 消息发布传出速率\* 指定的 速率超驱动因素 值。 在设置仪表板主机中定义了速率超驱动因素值,然后Rate-Based 节流。 可以使用 BizTalk:Message Agent 性能对象类别下的相应性能监视器计数器测量消息发布传入和传出速率。

  • 已修改默认限制行为。 使用 BizTalk Server 性能优化设置仪表板 描述影响限制行为的不同值。

    根据限流条件的严重性,采取以下措施:

  • 实现了主机实例的处理逻辑中的渐进式延迟。 当终结点管理器(EPM)线程从传输适配器接收一批消息时,以及/或 EPM 提交要发布到 MessageBox 数据库的一批消息时,可能会实现延迟。 处理延迟的持续时间及其递增速率随着节流条件的严重性而变化。

  • 终结点管理器(EPM)可用的线程数受到限制。 EPM 从适配器接收一批消息,并将消息发布到 MessageBox 数据库。 默认情况下,EPM 配置为每个 CPU 使用 20 个线程。 如果主机限制机制检测到入站处理的压力条件,则它可以暂时减少 EPM 可用的线程数,直到消除压力条件。 除非 EPM 线程可用于为入站消息批处理提供服务,否则 EPM 无法处理来自传输适配器的消息或将消息批处理传递到 MessageBox 数据库。

  • 内存和其他资源的使用会尽可能减少。 BizTalk Server 可以向其他服务类发送指令,以通过解除运行计划、收缩内存缓存大小以及限制内存密集型线程的使用来限制内存使用。

    从适配器到 MessageBox 的入站消息流

    适配器到 MessageBox 的入站消息流

出站主机限速

出站宿主节流(也称为 BizTalk Server 中的消息处理限制)适用于包含业务流程或发送适配器的宿主实例,这些实例负责接收、传递或处理已发布到 MessageBox 的消息。 可以在以下条件下触发出站主机限流条件:

  • 内存量、线程数或主机实例使用的数据库连接数超过了“设置”仪表板Resource-Based 限制中定义的限制阈值。 可以使用 BizTalk:Message Agent 性能对象类别下提供的性能监视器计数器来衡量这些值。

  • 主机实例 的消息传递传入速率 超过 消息传递传出速率 * 指定的 速率超驱动因素 值。 在设置仪表板Rate-Based 节流选项卡上定义速率超驱动因素值。 可以使用 BizTalk:Message Agent 性能对象类别下的相应性能监视器计数器测量消息传送传入和传出速率。

  • 主机实例并发处理的消息数超过 每个 CPU 的在处理消息数 * 服务器上可用的 CPU 数。 进程内消息阈值是在“设置仪表板”中的“Resource-Based 限制”选项卡上定义的。 主机实例并发处理的消息数可以使用 BizTalk:Message Agent 性能对象类别下的进程内消息计数性能计数器来度量。

  • 已修改默认限制行为。 使用 BizTalk Server 性能优化设置仪表板 描述影响限制行为的不同值。

    根据限流条件的严重性,将采取以下行动:

  • 在将消息传送到出站传输适配器或业务流程引擎以处理之前,主机实例的处理逻辑中会实现一个逐步延迟。 处理逻辑延迟的持续时间以及其增加的速率将随着限制条件的严重性而变化。

  • 内存中队列可以保存的消息数有限。 内存中队列充当临时占位符,用于将消息从 MessageBox 传递到消息代理,后者又将消息传递到 XLANG 并发送适配器。 默认情况下,内存中队列设置为每个 CPU 保留 100 条消息。 当队列已满时,在释放内存中队列之前,不会再从 MessageBox 取消排队消息。

  • 消息代理线程池的大小受到限制。 通过限制消息代理线程池大小,主机限制机制可以有效地减少传递到 XLANG 和适配器的消息量。

    可以通过更改“设置仪表板”中的“常规”选项卡上的“最大引擎线程”值来修改默认消息代理线程池大小。 有关修改此值的详细信息,请参阅 “如何修改常规设置”。

  • 内存和其他资源的使用会尽可能减少。 BizTalk Server 可以向其他服务类发送指令,以通过解除运行计划、收缩内存缓存大小以及限制内存密集型线程的使用来限制内存使用。

    从 MessageBox 到适配器和 XLANG 的出站消息流

    出站消息流至适配器和 XLANG

另请参阅

BizTalk Server 如何实现主机限制
使用设置仪表板进行 BizTalk Server 性能优化