Fabric 限制策略

当操作消耗的计算单位秒数(CUs)超过容量 SKU 允许时,会发生限流。 过多限制可能会导致最终用户体验下降。 Microsoft Fabric 租户可以创建多个容量,并将工作区分配给特定容量以进行计费和大小调整。

限制是在容量级别应用的,这意味着,尽管一个容量或一组工作区可能会因过载而降低性能,但其他容量可能会正常运行。 如果 OneLake 项目等功能在一个容量中产生并被另一个容量消耗,则消耗容量的限制状态决定了对项目的调用是否受到限制。

性能和可靠性之间的平衡

Fabric 旨在为客户提供快速的性能。 在其他平台上可能需要几分钟才能完成的任务可以在 Fabric 上仅几秒钟内完成。 大型操作可以在一天中的任何时间运行,而无需仔细计划,因为这些操作的计算分散在较长的时间段内,而不会减慢操作进程。 Fabric 使用内置 突发平滑实现此功能。 当临时使用高峰可能导致其他系统发生故障或变慢时,它们使容量能够自我管理和自我修复。

突发

为了确保快速性能,Fabric 使用 突发 让操作尽可能快地进行。 突发功能允许操作暂时使用比容量 SKU 预配更多的计算资源。 由于突发处理机制,用户无需等待就能迅速获取结果。 突发还允许较小的容量运行通常需要更昂贵的容量的更大作。

平滑

为了避免在操作受益于突发时对用户造成惩罚,Fabric 在较长的时间范围内对操作的 CU 使用进行平滑处理或取平均值。 此行为可确保用户能够享受持续稳定快速的性能,避免性能降速。

在将来 的时间段内平滑分配消耗的 CU 使用情况。 Fabric 中的时间点长 30 秒。 在接下来的 24 小时内有 2,880 个时间点。 Fabric 会自动管理每个时间点的消耗量。

操作的利用类型决定用于平滑处理的时间点数量。 了解 Fabric 操作

  • 交互操作需要至少五分钟进行平滑处理,最长可达 64 分钟,具体取决于它们消耗的 CU 资源。
  • 后台操作在 24 小时内被优化处理,因为它们通常情况下具有较长的运行时间和较大的 CU 使用。

由于平滑处理,一个操作的 CU 用量中只有一部分适用于单个时间点,这整体上减少了限流。 平滑 CU 使用率随着作运行而累积。 平滑使用量按 将来的容量付费,这是未来时间点中可用的 SU,因为容量持续运行。

爆发和平滑功能协同工作,使容量用户能够更轻松地完成其工作。 例如,用户通常会花时间安排作业,并在一天中分散作业。 通过平滑处理,后台作业的计算成本在 24 小时内得到平滑分配。 这意味着计划作业都可以同时运行,而不会造成任何峰值,否则会阻止作业启动。 同时,用户可以享受一致的快速性能,而无需等待慢速作业完成或浪费时间管理作业计划。

注意

当容量管理员为 Spark 启用自动计费缩放时,系统不支持突发和平滑功能。 在此场景中,Spark 使用情况以按需付费You-Go 模式运行,突发和平滑的概念不适用。

限制触发器和限制阶段

尽管容量具有内置的平滑功能,可减少使用量峰值的影响,但仍可能通过运行过多的操作来使容量过载。

容量在过载时会自动节流新操作。 节流在渐进步骤中进行,以尽量减少对重要任务(如数据刷新)的影响。

即使容量运行超过 100% 利用率,Fabric 也不会立即应用限制。 相反,容量提供 超额保护 ,允许消耗未来 10 分钟的容量而无需限流。 此行为提供有限的内置保护,防止激增,同时为用户提供持续快速的性能,而不会造成中断。

当容量在接下来的 10 分钟内耗尽其所有 CU 资源时,会启动限制措施。 第一阶段的节流将 20 秒的延迟应用于新的交互式操作。 当容量在未来一小时内占用其所有 CU 资源时,第二阶段的限制将拒绝新的交互式作。 在此阶段,允许后台操作启动和运行。 在第三阶段的限制中,当未来 24 小时内所有可用的 CU 资源被完全使用时,将拒绝所有新请求,包括交互和后台请求。 容量会继续限制请求,直到消耗的 CU 得到回报。

注意

Microsoft 尝试提高客户使用服务的灵活性,同时平衡管理客户容量使用的需求。 因此,Microsoft 可能会更改或更新 Fabric 限制策略。

下表汇总了节流触发条件和阶段。

使用情况 策略限制 平台策略体验影响
使用 <= 10 分钟 超额保护 作业可以消耗 10 分钟的未来容量使用,而无需限制。
10 分钟 < 使用 <= 60 分钟 交互式延迟 提交时,用户请求的交互式作业延迟 20 秒。
60 分钟 < 使用 <= 24 小时 交互式拒绝 用户请求的交互式作业被拒绝。
使用 > 24 小时 后台拒绝 所有请求均被拒绝。

平滑和限流的示例

下面是一个示例,说明平滑处理如何应用于一个消耗 1 CUHr 的后台操作(其用法相当于 1 CU 使用 1 小时)。 后台操作在24小时内得到平滑处理。 在任何时间点上,后台操作的贡献是操作的 CUHrs 数量除以 SKU 级别的 CUHrs 数量。 对于 F2,此作业将在每个时间点贡献 1 CUHr / 48 CUhrs,即约 2.1%。 对 10 分钟和 60 分钟节流限制的影响约为 2.1%。

下面是支持示例的详细信息:

1 CUHr = 3,600 CU (1 CU * 每小时 60 分钟 * 每分钟 60 秒)

每个时间点长 30 秒。 在 24 小时内,有 2,880 个时间点(24 小时 * 60 分钟 * 每分钟 2 个时间点)。

由于 3,600 个计算单元在 24 小时内进行平滑分配,作业在每个 30 秒时间点贡献 3,600 个计算单元/2,880 个时间点。 因此,每个时间点贡献 1.25 个 CU。

10 分钟限制百分比基于下一段时长为 10 分钟的容量正常运行时间中可用的总计算单元数。

F2 容量每秒有 2 个 CU(或 2 个 CU)。 在每个时间点中,F2 有 2 个 CU * 30 秒 = 60 个计算 CU。

后台作业对任何单个时间点的贡献为 1.25 CUs/60 CUs = 大约单个时间点的 2.1%。

在 10 分钟内,F2 有 2 CU * 60 秒 * 10 分钟 = 1,200 个计算单元的计算能力。

背景作业中平滑合并到未来10分钟容量的部分为1.25 CU * 每分钟2个时间点 * 10分钟 = 25 CU。

因此,10分钟的限流比率为25个计算单元/1,200个计算单元 ≈ 2.1%。

同样,后台作业的 60 分钟节流百分比影响也约为 2.1%。

尽管后台操作消耗的计算单元数量超过了接下来10分钟内可用的计算单元(消耗量为可用量的6倍),F2容量不会受到限制,因为总计算单元在24小时内被平滑处理。 由于平滑处理,消耗的 CU 中只有一小部分适用于任何单个时间点。

超额、结转和燃尽图

当操作使用的容量超过 SKU 在单个时间点的支持时,会计算 超额。 应用平滑后计算超额部分。 如果有超过允许的 10 分钟限制窗口的超额,则它们将成为 结转 CU。

超额保护 确保在 10 分钟限速窗口期未满之前,容量不会被限速。 它旨在降低由于利用率临时高峰而导致的交互式延迟频率。

结转 CU 将适用于每个后续时间点。 如果某个时间点未满,则未使用的 OU 会减少 携带的 OU 量。 减少被称为 烧毁

限流措施将继续,直到未使用的容量抵消所有待结算的容量单位。

监视限制的容量

容量管理员可以设置电子邮件警报,以在容量达到其预配 CU 资源的 100% 消耗时收到通知。 管理员还可以使用容量指标应用来查看其容量的限制级别。

调整大小和优化容量

一贯的高节流级别表示需要跨多个容量进行负载均衡或增加容量的SKU尺寸。 使用 F SKU 时,可以随时在管理员设置中手动增加和减小 SKU 大小,以便在需要时解决限制问题。

如何判断容量节流正在发生

当容量拒绝请求时,用户会看到特定的错误代码和错误文本:

  1. 状态代码 CapacityLimitExceeded
  2. 错误消息 Your organization's Fabric compute capacity has excceded its limits. Try again later
  3. 错误消息 Cannot load model due to reaching capacity limits

注意

性能缓慢通常是由于项目的设计所致。 有时性能不佳只是因为容量限制。

当容量过载时,容量管理员可以使用 Fabric 容量指标应用程序来确认是否发生了节流。

  1. “计算”页上的“系统事件”表显示限制事件的历史记录。
  2. 计算页面上的限流图表显示,当平滑使用量超过其中一个限流限制时。

如何在发生限流时停止限流

容量是自我修复的,因此,在提交新请求之前,始终可以等待重载状态结束。

但是,若要更快地取消节流,可以使用下面列出的策略。

使用 F SKU 容量时,要停止流量控制:

  • 暂时增加库存单位(SKU)。 通过增加库存单位(SKU),可以更快地加速结转,因为每个时间点都有更多的空闲容量。
  • 暂停,然后恢复容量。 暂停容量会导致针对累积的未来容量使用情况的计费事件发生。 当容量启动或恢复时,它的未来容量使用量为零,因此可以立即接受新操作。

使用 P SKU 容量时,要停止限制:

未限制正在进行的操作

容量开始限制后,仅影响随后请求的操作。 允许所有操作,包括在节流开始前提交的长时间运行操作,运行至完成。 这种行为可以确保操作已完成,即使在 CU 使用量激增期间也是如此。

复合节流保护

在 Fabric 中,一个操作通常会触发其他项目或任务的完成。 有许多示例,但典型的示例是查看报表。 报表中的每个视觉对象针对基础语义模型运行查询。 语义模型还可以读取 OneLake 数据表单,以提供查询结果。 这些请求中的每一个都形成一个链。

当存在一系列调用时,可能面临 复合调节的风险,即限制多次应用于同一请求。 Fabric 具有内置的复合节流保护,可降低复合节流发生的可能性。 工作负荷可以选择使用此保护。

当工作负荷支持复合限制保护时,对于参与链的每个容量,请求仅限制一次。 当请求开始时,系统会对链中的所有操作做出限流决策。

如果某个链依赖于多个能力,则每个能力都会在收到第一个请求时实施一次限流。

以下工作负载情况支持复合节流:

  • 使用直接查询连接到其他语义模型的语义模型。
  • 从分页报表到语义模型的 DAX 查询。

调节行为特定于 Fabric 工作负荷

虽然大多数 Fabric 产品遵循前面提到的限制规则,但有一些例外。

例如,Fabric 事件流有许多操作可以在启动后运行数年。 限制新的事件流操作没有意义,因此,分配给保持流开放的 CU 资源数量会减少,直到容量恢复良好状态。

另一个例外是实时智能,如果操作延迟 20 秒,它就不是实时。 因此,Real-Time 智能不会在未来容量的10分钟内应用调节的第一阶段,它包括20秒延迟。 Real-Time Intelligence 等到预期容量 60 分钟的拒绝阶段才开始限流。 此行为可确保用户即使在高需求期间也能继续享受实时性能。

同样,仓库类别中的几乎所有操作都会被报告为后台,以利用 24 小时的活动平滑,从而实现最灵活的使用模式。 将所有数据仓库分类为“后台”可防止 CU 利用率峰值太快触发限制。 某些请求可能会触发受限于不同方式的操作链。 当交互式操作启动一个包含后台操作的链时,后台操作可能会受到与交互式操作相同的限制。

用于限制和平滑的交互式和后台分类

一些管理员可能会注意到,操作有时被归类为交互式操作,并作为后台平滑处理,反之亦然。 之所以发生这种区别,是因为 Fabric 的限制系统必须在请求开始运行之前应用限制规则。

节流系统尝试在提交时准确对操作进行分类。 有时,当操作开始运行时,能够获得更详细的信息,这些信息会改变分类。 在模棱两可的情况下,限流系统会将操作归类为后台任务,这符合用户的最大利益。

跟踪超额和拒绝的操作

可以通过查看 Microsoft Fabric 容量指标应用中利用率图表来查看容量是否过载。 超过阈值线的尖峰表示超额。 若要进一步调查超额,请查看时间点详情页面。 然后,您可以查看交互操作和后台操作,并查看哪些操作导致资源超用。

由于利用率超过 100% 并不意味着自动限制,因此在评估超额时需要使用限制图表。 从那里,可以打开一个显示燃尽分钟数的表,其是一个包含添加、燃尽和累积百分比等的图表。 燃尽时间估计,如果没有其他操作发生,会需要多长时间来完成燃尽。

显示所选时间点钻取选项的动画。

若要查看任何过度利用容量的视觉历史记录(包括结转、累积和燃尽利用率数据),请转到“超额”选项卡。可以更改超额视觉比例以显示 10 分钟、60 分钟和 24 小时。

显示随时间推移而超额的动画。

Microsoft Fabric 容量指标应用向下钻取允许管理员查看在限制事件期间被拒绝的操作。 有关这些操作的信息有限,因为它们从未被允许启动。 管理员可以查看提交请求的产品、用户、操作 ID 和时间。 当请求被拒绝时,最终用户会收到一条错误消息,要求他们稍后再试。

计费和非计费计算

在容量指标应用程序中查看容量使用情况时,某些操作是计费的,而另一些操作是不可计费的。 限制计算中仅包括可计费操作。 预览功能可能生成不可计费的操作。 使用不可计费的操作来提前规划,以确保当将来这些预览功能开始计费时,容量适当。