你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

请求速率限制策略

适用于:✅Microsoft FabricAzure 数据资源管理器

通过工作负荷组的请求速率限制策略,可以限制分类到工作负荷组、每个工作负荷组或每个主体中的并发请求数。

速率限制在工作负荷组 请求速率限制强制策略定义的级别强制执行。

策略对象

请求速率限制策略具有以下属性:

名字 支持的值 描述
IsEnabled truefalse 指示策略是否已启用。
范围 WorkloadGroupPrincipal 限制适用的范围。
LimitKind ConcurrentRequestsResourceUtilization 请求速率限制的类型。
性能 属性包 请求速率限制的属性。

并发请求速率限制

ConcurrentRequests 类型的请求速率限制包括以下属性:

名字 类型 描述 支持的值
MaxConcurrentRequests int 最大并发请求数。 [010000]

注意

  • 如果工作负荷组对最大并发请求没有指定的限制,则受默认最大值 10000的约束。

当请求超出最大并发请求数的限制时:

  • 系统信息命令呈现的请求状态将 Throttled
  • 错误消息将包括限制的 以及超出的 容量

下表显示了一些并发请求的示例,这些请求返回的最大限制和错误消息:

场景 错误信息
分类为 default 工作负荷组的受限制 .create table 命令,该命令在工作负荷组范围内限制为 80 个并发请求。 由于限制,管理命令已中止。 在一些退避后重试可能会成功。 CommandType: 'TableCreate', Capacity: 80, Origin: 'RequestRateLimitPolicy/WorkloadGroup/default'.
分类为名为 MyWorkloadGroup的工作负荷组的限制查询,该查询限制为工作负荷组范围内的 50 个并发请求。 由于限制,查询已中止。 在一些退避后重试可能会成功。 容量:50,源:“RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup”。
被分类到名为 MyWorkloadGroup的工作负荷组的限制查询,该查询在主体范围内限制为 10 个并发请求。 由于限制,查询已中止。 在一些退避后重试可能会成功。 容量:10,源:“RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup/Principal/aaduser=9e04c4f5-1abd-48d4-a3d2-9f58615b4724;6ccf3fe8-6343-4be5-96c3-29a128dd9570'。
  • HTTP 响应代码将 429。 子代码将 TooManyRequests
  • 异常类型将为查询 QueryThrottledException,并 ControlCommandThrottledException 管理命令。

注意

资源利用率限制

ResourceUtilization 类型的请求速率限制包括以下属性:

名字 类型 描述 支持的值
ResourceKind ResourceKind 要限制的资源。

ResourceKindTotalCpuSeconds时,将根据已完成请求 CPU 使用率的执行后报告强制执行限制。 报告 CPU 使用率为 0.005 秒或更低时间的请求不会计入计数。 限制(MaxUtilization)表示在指定时间范围内(TimeWindow)内请求可以使用的总 CPU 秒数。 例如,运行即席查询的用户可能每小时限制为 1000 CPU 秒。 如果超出此限制,即使并发启动,后续查询也会受到限制,因为累积 CPU 秒数已超过滑动时段内定义的限制。
RequestCountTotalCpuSeconds
MaxUtilization long 可以利用的资源的最大值。 RequestCount: [116777215];TotalCpuSeconds: [1828000]
TimeWindow timespan 应用限制的滑动时间窗口。 [00:01:001.00:00:00]

当请求超出资源利用率限制时:

  • 系统信息命令呈现的请求状态将 Throttled
  • 错误消息将包括限制的 以及已超出的 配额。 例如:

下表显示了一些超出资源利用率限制的请求示例,以及这些请求返回的错误消息:

场景 错误信息
已分类到名为 Automated Requests的工作负荷组的限制请求,该请求在主体范围内每小时有 1000 个请求的限制。 由于超出配额限制,请求被拒绝。 资源:“RequestCount”,配额:“1000”,TimeWindow: '01:00:00',Origin: 'RequestRateLimitPolicy/WorkloadGroup/Automated Requests/Principal/aadapp=9e04c4f5-1abd-48d4-a3d2-9f58615b4724;6ccf3fe8-6343-4be5-96c3-29a128dd9570'。
一个限制请求,该请求被分类为名为 Automated Requests的工作负荷组,该请求在工作负荷组范围内限制为每小时 2000 个 CPU 秒。 由于超出配额限制,请求被拒绝。 资源:“TotalCpuSeconds”,配额:“2000”,TimeWindow:“01:00:00”,源:“RequestRateLimitPolicy/WorkloadGroup/自动请求”。
  • HTTP 响应代码将 429。 子代码将 TooManyRequests
  • 异常类型将 QuotaExceededException

一致性如何影响速率限制

在高度一致性的情况下,最大并发请求的默认限制取决于群集的 SKU,并计算为:Cores-Per-Node x 10。 例如,使用 Azure D14_v2 节点设置的群集(其中每个节点有 16 个 vCore)将默认限制为 16 x 10 = 160

在弱一致性下,最大并发请求的有效默认限制取决于群集的 SKU 和查询头数,并计算为:Cores-Per-Node x 10 x Number-Of-Query-Heads。 例如,使用 Azure D14_v2 和 5 个查询头设置的群集(其中每个节点有 16 个 vCore)将具有有效的默认限制,即 16 x 10 x 5 = 800

由于高度一致性,最大并发请求的默认限制取决于事件屋的 SKU,计算方式为:Cores-Per-Node x 10。 例如,使用 Azure D14_v2 节点设置的事件库(其中每个节点有 16 个 vCore)将默认限制为 16 x 10 = 160

在弱一致性下,最大并发请求的有效默认限制取决于事件库的 SKU 和查询头数,计算方式为:Cores-Per-Node x 10 x Number-Of-Query-Heads。 例如,使用 Azure D14_v2 和 5 个查询头设置的事件库(其中每个节点有 16 个 vCore)将具有有效的默认限制 16 x 10 x 5 = 800

有关详细信息,请参阅 查询一致性

default 工作负荷组

默认情况下,default 工作负荷组定义了以下策略。 可以更改此策略。

[
  {
    "IsEnabled": true,
    "Scope": "WorkloadGroup",
    "LimitKind": "ConcurrentRequests",
    "Properties": {
      "MaxConcurrentRequests": < Cores-Per-Node x 10 >
    }
  }
]

注意

  • 更改 default 工作负荷组的策略时,必须为最大并发请求定义限制。

例子

以下策略最多允许:

  • 工作负荷组的 500 个并发请求。
  • 每个主体 25 个并发请求。
  • 每小时每个主体 50 个请求。
[
  {
    "IsEnabled": true,
    "Scope": "WorkloadGroup",
    "LimitKind": "ConcurrentRequests",
    "Properties": {
      "MaxConcurrentRequests": 500
    }
  },
  {
    "IsEnabled": true,
    "Scope": "Principal",
    "LimitKind": "ConcurrentRequests",
    "Properties": {
      "MaxConcurrentRequests": 25
    }
  },
  {
    "IsEnabled": true,
    "Scope": "Principal",
    "LimitKind": "ResourceUtilization",
    "Properties": {
      "ResourceKind": "RequestCount",
      "MaxUtilization": 50,
      "TimeWindow": "01:00:00"
    }
  }
]

以下策略将阻止分类到工作负荷组的所有请求:

[
  {
    "IsEnabled": true,
    "Scope": "WorkloadGroup",
    "LimitKind": "ConcurrentRequests",
    "Properties": {
      "MaxConcurrentRequests": 0
    }
  },
]