计算限制
适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集
Microsoft 计算实施限制机制来帮助提高服务的整体性能并为客户提供一致的体验。 超出最大允许限制的 API 请求将受到限制,并且用户会收到 HTTP 429 错误。 所有计算限制策略都是按每个区域实施的。
Microsoft 计算实施限制策略来限制每个资源、每个区域、每个订阅每分钟发出的 API 请求数量。 如果 API 请求的数量超出这些限制,请求就会受到限制。 以下是这些限制的工作原理:
每资源限制 - 每个资源(例如虚拟机 [VM])都有 API 请求的特定限制。 例如,假设用户在订阅中创建了 10 个 VM。 用户一分钟内可为每个 VM 发出最多 12 个更新请求。 如果用户超出了 VM 的限制,API 请求将受到限制。 此限制可确保少数资源不会消耗订阅级别限制并限制其他资源。
订阅限制 - 除了资源限制外,订阅中所有资源的 API 请求数还有一个总体限制。 任何超出此限制的 API 请求都会受到限制,无论是否已达到单个资源的限制。 例如,假设用户在订阅中拥有 200 个 VM。 尽管用户有权为每个 VM 发起最多 12 个更新 VM 请求,但更新 VM API 请求的总限制为每分钟 1500 个。 任何超过 1500 个订阅的更新 VM API 请求都会受到限制。
为了确定每个资源和订阅的限制,Microsoft 计算使用令牌桶算法。该算法为每个限制创建桶,并在每个桶中保存特定数量的令牌。 桶中的令牌数表示任何给定的分钟中的限制。
在限制窗口的开始创建资源时,桶会填充至其最大容量。 用户发起的每个 API 请求都会消耗一个令牌。 当令牌数耗尽为零时,后续 API 请求将受到限制。 对于资源和订阅,桶每分钟都会以恒定的速率重新填充新令牌,这称为桶重新填充率。
例如:让我们考虑“VM 更新 API 的限制策略”,它规定桶重新填充率为每分钟 4 个令牌,最大桶容量为 12 个令牌。 用户按照下表对虚拟机 (VM) 调用更新 VM API 请求。 最初,在限制窗口开始时,桶中装有 12 个令牌。 到第四分钟,用户用完了所有 12 个令牌,因此清空了桶。 在第五分钟,根据桶重新填充率,桶中重新填充了四个新令牌。 因此,第五分钟可以发出四个 API 请求,而 Microsoft 计算因令牌不足而限制了一个 API 请求。
(分钟) | 1st | 第 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 |
遵循类似的过程来确定订阅级别的限制。 以下部分详细介绍了用于确定虚拟机、虚拟机规模集和虚拟机规模集 VM 的限制的桶重新填充率和最大桶容量。
虚拟机的 API 请求分为七个不同的策略。 每个策略都有其自身的限制,具体取决于该策略下的 API 请求的资源密集程度。 下表包含这些策略、相应的 REST API 及其各自限制的完整列表:
策略类别 | REST API | 资源级别 | 资源级别 | 订阅级别 | 订阅级别 |
---|---|---|---|---|---|
桶重新填充率(每分钟) | 最大桶容量 (每分钟) |
桶重新填充率 (每分钟) |
最大桶容量 (每分钟) |
||
放置 VM (创建新 VM) |
创建 | 4 | 12 | 500 | 1,500 |
更新 VM (更新现有 VM) |
更新 重新应用重启 关闭电源 Start 通用化 转换为托管磁盘 重新部署 执行维护 捕获 运行命令 创建或更新 扩展 - 更新 扩展 - 删除 重置映像 更新 运行命令 - 更新 运行命令 - 删除 运行命令 - 创建或更新 |
4 | 12 | 500 | 1,500 |
删除 VM (删除 VM) |
删除 模拟逐出 解除分配 |
4 | 12 | 500 | 1,500 |
低成本获取 VM (获取有关单个 VM 的信息) |
Get 实例视图 扩展 - 获取 列出可用大小 检索启动诊断数据 运行命令 - 按虚拟机获取 运行命令 - 按虚拟机列出 |
12 | 36 | 8,000 | 24,000 |
高成本获取 VM1 (获取有关多个 VM 的信息) |
列表 全部列出 按位置列出 |
NA | NA | 300 | 900 |
Get 操作 (获取有关异步 VM 操作的信息) |
异步操作的状态 | 15 | 45 | 5,000 | 15,000 |
VM 来宾修补操作 (评估和安装来宾修补程序) |
评估修补程序 安装修补程序 |
2 | 6 | 200 | 600 |
1 仅订阅级别的策略适用。
虚拟机规模集的 API 请求(统一和弹性)分为 5 个不同的策略。 每个策略都有其自身的限制,具体取决于该策略下的 API 请求的资源密集程度。 这些策略适用于弹性和统一业务流程模式。 下表包含这些策略、相应的 REST API 及其各自限制的完整列表:
策略类别 | REST API | 资源级别 | 资源级别 | 订阅级别 | 订阅级别 |
---|---|---|---|---|---|
桶重新填充率 (每分钟) |
最大桶容量 (每分钟) |
桶重新填充率(每分钟) | 最大桶容量 (每分钟) |
||
放入 (创建新的规模集) |
创建 | 4 | 12 | 125 | 375 |
更新 (更新现有的规模集) |
更新 启动2 重启2 重新部署2 执行维护2 重置映像2 全部重置映像2 创建或更新 滚动升级 - 取消 扩展 - 创建 扩展 - 更新 扩展 - 删除 强制执行恢复 Service Fabric 平台更新域演练 转换为单个放置组 设置业务流程服务状态 |
4 | 12 | 500 | 1,500 |
删除 (删除规模集) |
删除 关机2 解除分配 |
4 | 12 | 175 | 525 |
低成本获取 (获取有关单个规模集的信息) |
Get 列出 SKU 滚动升级 - 获取最新 获取 OS 升级历史记录 |
12 | 36 | 800 | 2,400 |
高成本获取 (获取资源密集型信息) |
获取实例视图 列出2 全部列出2 按位置列出2 |
10 | 30 | 360 | 1,080 |
2 仅订阅级别的策略适用。
虚拟机规模集虚拟机的 API 请求分为 3 个不同的策略。 每个策略都有其自身的限制,具体取决于该策略下的 API 请求的资源密集程度。 下表包含这些策略、相应的 REST API 及其各自限制的完整列表:
策略类别 | REST API | 资源级别 | 资源级别 | 订阅级别 | 订阅级别 |
---|---|---|---|---|---|
桶重新填充率 (每分钟) |
最大桶容量 (每分钟) |
桶重新填充率 (每分钟) |
最大桶容量 (每分钟) |
||
更新规模集 VM (更新规模集中的现有 VM) |
Start 重启 重置映像 全部重置映像 更新 模拟逐出 扩展 - 创建或更新 运行命令 - 创建或更新 运行命令 - 更新 |
4 | 12 | 500 | 1,500 |
删除规模集 VM (删除规模集 VM) |
删除 PowerOff 解除分配 扩展 - 删除 运行命令 - 删除 |
4 | 12 | 500 | 1,500 |
获取规模集 VM (获取有关规模集 VM 的信息) |
Get 获取实例视图 扩展 - 获取 运行命令 - 获取 检索启动诊断数据 |
12 | 36 | 2,000 | 6,000 |
如果用户仍然面临计算限制带来的挑战,请参阅排查 Azure 中的限制错误 - 虚拟机。 其中详细介绍了如何排查限制问题,以及避免受到限制的最佳做法。
用户不需要对其配置或工作负载进行任何更改。 所有现有 API 继续按原样工作。
限制策略提供以下几种好处:
所有计算资源都有统一的 1 分钟窗口。 受到限制 1 分钟后,用户可以成功进行 API 调用。
由于限制是在资源级别定义的,因此没有任何单一资源可以耗尽订阅下的所有限制。
Microsoft 计算正在引入一种新算法(令牌桶算法)来确定限制。 该算法在发出大量 API 请求的同时为客户提供额外的缓冲。
作为每个响应的一部分,Microsoft 计算会返回 x-ms-ratelimit-remaining-resource,可用于确定针对策略的限制。 适用的限制策略列表将作为调用速率信息标头的响应返回。