计算限制

适用于:✔️ Linux 虚拟机 ✔️ Windows 虚拟机 ✔️ 灵活规模集 ✔️ 统一规模集

Microsoft Compute实现限制机制,以优化服务的整体性能,并为客户提供一致的体验。 超出最大允许限制的 API 请求将受到限制,并且用户会收到 HTTP 429 错误。 所有计算限制策略都是按每个区域实施的。

限流策略的工作原理是什么?

Microsoft Compute 实施限流策略,限制每分钟每个区域内每个资源和每个订阅能够发出的 API 请求数。 如果 API 请求的数量超出这些限制,请求就会受到限制。 以下是这些限制的工作原理:

  • 每个资源限制 - 每个资源(例如虚拟机(VM)都有 API 请求的特定限制。 例如,假设用户在订阅中创建了 10 个 VM。 用户一分钟内可为每个 VM 发出最多 12 个更新请求。 如果用户超出了 VM 的限制,API 请求将受到限制。 此限制可确保少数资源不会消耗订阅级别限制并限制其他资源。

  • 订阅限制 - 除了资源限制外,订阅中所有资源的 API 请求数还有一个总体限制。 任何超出此限制的 API 请求都会受到限制,无论是否已达到单个资源的限制。 例如,假设用户在订阅中拥有 200 个 VM。 尽管用户有权为每个 VM 发起最多 12 个更新 VM 请求,但更新 VM API 请求的总限制为每分钟 1500 个。 任何订阅中超过 1500 次的更新 VM API 请求都会被限制。

Microsoft Compute 如何确定限流阈值?

为了确定每个资源和订阅的限制,Microsoft Compute 使用 Token Bucket Algorithm.此算法为每个限制创建存储桶,并在每个存储桶中保留特定数量的令牌。 桶中的令牌数表示任何给定时刻的限流限制。

在限制窗口开始时,当资源被创建时,桶会被填充至其最大容量。 用户发起的每个 API 请求都会消耗一个令牌。 当令牌数耗尽为零时,后续 API 请求将受到限制。 对于资源和订阅,桶每分钟都会以恒定的速率重新填充新令牌,这称为桶重新填充率

例如:让我们考虑“VM 更新 API 的限制策略”,它规定桶重新填充率为每分钟 4 个令牌,最大桶容量为 12 个令牌。 用户按照下表对虚拟机 (VM) 调用更新 VM API 请求。 最初,在节流窗口开始时,桶中装有 12 个令牌。 到第四分钟时,用户用完了所有 12 个令牌,桶因此被清空。 在第五分钟,按照桶填充速率,桶中重新注入了四个新令牌。 因此,可以在第五分钟发出四个 API 请求,而Microsoft计算服务会由于令牌不足而限制一个 API 请求。

(分钟) 第一 第 2 个 第三 第 4 个 第 5 位 第 6 个
开始时的令牌数量 (A) 12 12 8 12 4 4
每分钟请求数 (B) 0 8 0 13 5 0
限流请求 (C) 0 0 0 1 1 0
期限结束时的剩余令牌数
D = Max(A-B,0)
12 4 8 0 0 4

遵循类似的过程来确定订阅级别的限流限制。 以下部分详细介绍了 Bucket 重新填充速率和最大 Bucket 容量,这些容量用于确定对 Virtual MachinesVirtual Machine Scale SetsVirtual Machines Scale Set VMs 的限制。

虚拟机的限速限制

Virtual Machines API 请求分为七个不同的策略。 每个策略都有其自身的限制,具体取决于该策略下的 API 请求的资源密集程度。 下表包含这些策略、相应的 REST API 及其各自的限流列表:

策略类别 REST API 资源级别 资源级别 订阅级别 订阅级别
桶重新填充率(每分钟) 最大桶容量
(每分钟)
桶重新填充率
(每分钟)
最大桶容量
(每分钟)
放置虚拟机
(创建新 VM)
创建 4 12 500 1,500
更新 VM
(更新现有 VM)
更新
重新应用重启
关闭电源
启动
通用化
转换为托管磁盘
重新部署
进行维护
捕获
运行命令
创建或更新
扩展 - 更新
扩展 - 删除
重置映像
更新
运行命令 - 更新
运行命令 - 删除
运行命令 - 创建或更新
4 12 500 1,500
删除 VM
(删除 VM)
删除
模拟逐出
解除分配
4 12 500 1,500
低成本获取 VM
(获取有关单个 VM 的信息)
获取
实例视图
扩展 - 获取
列出可用大小
检索启动诊断数据
运行命令 - 通过虚拟机获取
运行命令 - 按虚拟机列出
12 36 8,000 24,000
高成本获取 VM1
(获取有关多个 VM 的信息)
列表
全部列出
按位置列出
暂无 暂无 300 900
获取操作
(获取有关异步 VM 操作的信息)
异步操作的状态 15 45 5,000 15,000
VM 虚拟机补丁操作
(评估和安装来宾修补程序)
评估补丁
安装补丁
2 6 200 600

1 仅订阅级别的策略适用。

虚拟机规模集的速率限制

虚拟机规模集的 API 请求(统一和弹性)分为 5 个不同的策略。 每个策略都有其自身的限制,具体取决于该策略下的 API 请求的资源密集程度。 这些策略适用于 Flex 和 Uniform 编排模式。 下表包含这些策略、相应的 REST API 及其各自的限流列表:

策略类别 REST API 资源级别 资源级别 订阅级别 订阅级别
桶重新填充率
(每分钟)
最大桶容量
(每分钟)
桶重新填充率(每分钟) 最大桶容量
(每分钟)
放置
(创建新的规模集)
创建 4 12 125 375
更新
(更新现有的 Scale Set)
更新
启动2
重启2
重新部署2
执行维护2
重置映像2
全部重置映像2
创建或更新
滚动升级 - 取消
扩展 - 创建
扩展 - 更新
扩展 - 删除
Force 恢复服务Fabric平台更新域演练
转换为单个放置组
设置编排服务状态
4 12 500 1,500
删除
(删除规模集)
删除
关机2
解除分配
4 12 175 525
低成本获取
(获取有关单个规模集的信息)
获取
列出 SKU
滚动升级 - 获取最新
获取 OS 升级历史记录
12 36 800 2,400
高成本获取
(获取资源密集型信息)
获取实例视图
列表2
全部列出2
按位置列出2
10 30 360 1,080

2 仅订阅级别的策略适用。

虚拟机规模集的限流限制

虚拟机规模集的 API 请求中的虚拟机被分为三个不同的类别。 每个策略都有其自身的限制,具体取决于该策略下的 API 请求的资源密集程度。 下表包含这些策略、相应的 REST API 及其各自的限流列表:

策略类别 REST API 资源级别 资源级别 订阅级别 订阅级别
桶重新填充率
(每分钟)
最大桶容量
(每分钟)
桶重新填充率
(每分钟)
最大桶容量
(每分钟)
更新虚拟机规模集
(更新规模集中的现有 VM)
启动
重启
重置映像
重置所有映像
更新
模拟逐出
扩展 - 创建或更新
运行命令 - 创建或更新
运行命令 - 更新
4 12 500 1,500
删除规模集 VM
(删除规模集虚拟机)
删除
PowerOff
解除分配
扩展 - 删除
运行命令 - 删除
4 12 500 1,500
获取规模集中的虚拟机
(获取有关虚拟机规模集的信息)
获取
获取实例视图
插件 - 获取
运行命令 - 获取
获取启动诊断数据
12 36 二千 6,000

故障排除指南

如果由于计算资源限制,用户仍面临挑战,请参阅 Azure - Virtual Machines 中的排查限制错误。 其中详细介绍了如何排查流量限制问题,以及避免被限制的最佳实践。

常见问题解答

用户是否需要执行任何操作?

用户不需要对其配置或工作负载进行任何更改。 所有现有 API 继续按原样工作。

节流策略有哪些好处?

限流策略具有多个好处:

  • 所有计算资源都有统一的 1 分钟窗口。 受到限制 1 分钟后,用户可以成功进行 API 调用。

  • 由于限制是在资源级别定义的,因此没有任何单一资源可以耗尽订阅下的所有限制。

  • Microsoft计算服务引入了一种新算法,即用于确定限制的令牌存储桶算法。 该算法在发出大量 API 请求的同时为客户提供额外的缓冲。

客户在即将达到限速限制时,会收到提醒吗?

作为每个响应的一部分,Microsoft Compute 返回 x-ms-ratelimit-remaining-resource,可用于确定策略的流量控制限制。 适用的限制策略列表会作为对调用速率信息标头的响应返回。