主机阻止概述

在 BizTalk Server 上执行的大部分处理都在称为 BizTalk Server 主机实例的逻辑实体内进行,该逻辑实体是在 BizTalk Server 上以 Windows 服务或独立的主机进程运行的进程。 为了管理主机实例进程使用的资源,BizTalk Server 使用可调整的阻止机制控制消息在主机实例中的传输和处理。

该阻止机制对主机实例的负载进行调节,以确保负载没有超过主机实例或任何下游主机实例的处理能力。 该阻止机制还防止称为资源争用的情况发生,这种情况会降低主机实例进程或其他系统进程的整体性能。 一个或多个进程消耗有限的资源从而损害进程自身和/或其他进程时,便会出现资源争用的情况。 例如,消耗过量的内存或线程将导致内存分配失败或大量的线程上下文切换,这会影响进程的性能。 这样的资源争用会降低 BizTalk Server 的整体性能。

主机阻止机制还检测可用资源利用不足的时间。 如果可用的资源未得到充分利用,则阻止机制将允许主机实例处理更多的消息。 主机阻止机制不断监视可用资源是否过度利用或利用不足,并据以调整通过主机实例的消息流。

BizTalk Server 主机阻止机制有助于确保系统以最佳可持续水平运行。

在 BizTalk Server 管理控制台中基于每台主机对主机阻止配置参数进行设置。 请注意,为主机设置的阻止配置参数将应用于所有接收处理程序、发送处理程序或相应主机实例中的业务流程。 如果要设置仅应用于特定接收处理程序、发送处理程序或业务流程的阻止参数,则应执行以下操作:

  • 创建新主机并相应地设置阻止参数。

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

  • 创建要在 BizTalk Server 上运行的此主机的一个或多个实例。

入站主机阻止

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

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

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

  • 主机实例 的消息发布传入速率 超过了 消息发布传出速率\* 指定的 速率超发因素 值。 “速率超速因素”值在“设置仪表板”、“主机”和“基于速率的限制”中定义。 可以使用 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 的消息的适配器。 以下情况可以触发出站主机阻止条件:

  • 主机实例使用的内存量、线程数或数据库连接数超过了“设置仪表板基于资源的限制”中定义的限制阈值。 这些值可通过 BizTalk:Message 代理 性能对象类别下提供的性能监视器计数器进行度量。

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

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

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

    根据限制条件的严重性,将执行以下操作:

  • 在将消息送达到出站传输适配器或业务流程引擎以便进行消息处理之前,实现主机实例处理逻辑中的渐进式延迟。 处理逻辑延迟的持续时间和持续时间递增的速率都随阻止条件的严重性而变化。

  • 限制内存中队列可以保留的消息数。 内存中队列充当临时占位符,用于将消息从 MessageBox 送达到消息代理,消息代理接着将消息送达到 XLANG 和发送适配器。 默认情况下,内存中队列设置为每 CPU 保留 100 个消息。 队列已满时,不会再有消息从 MessageBox 中出列,直到内存中队列得到释放。

  • 限制消息代理线程池的大小。 通过限制消息代理线程池的大小,主机阻止机制有效地减少送达到 XLANG 和适配器的消息数。

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

  • 根据需要减少内存和其他资源的使用。 BizTalk Server 可以向其他服务类别发送指令,通过冻结正在运行的调度、缩小内存缓存大小以及限制使用内存占用量大的线程,来限制内存使用。

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

    到适配器和 XLANG

另请参阅

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