为保障阿里云云服务的稳定以及云资源的公平使用,云服务器ECS开启了API访问的流量控制。本文主要介绍如何查看ECS API流量控制,并提供API流量控制的合理化建议。

流量控制范围说明

云服务器ECS所有API均开启了访问流量控制,并按照地域和单个接口进行区分,不同地域、不同接口存在不同的流量控制阈值。同一阿里云账号在不同地域内调用某一指定接口的访问流量不能超过系统规定的阈值,否则单位时间内API的调用请求会被系统拒绝。

访问流量包括来自ECS控制台、RAM用户、基于阿里云账号的自建平台以及IaaS(Infrastructure as a Service)编排平台(例如Terraform、Ansible)的数据流量。

您可以通过配额中心找到并单击云服务器 ECS,查看不同的ECS API的流量控制阈值。配额中心
说明 云服务器ECS目前支持查询部分API的流量控制阈值。更多API的阈值信息在持续增加中。

流量控制规则说明

API访问流量控制的规则说明如下:
  • 不同接口的流量控制各自独立计算,单个接口达到流量控制阈值时不会影响其他接口的调用,也不影响该接口在其他地域下的正常使用。
  • 如果某一接口在第T分钟时被流量控制,则该接口需要在第T+1分钟时才会被允许继续调用。
  • 如果使用SDK或CLI等运维方式调用API时被流量控制并报错,相应的功能在阿里云云服务控制台操作中也会被流量控制。

合理化建议

调用ECS API的请求在达到流量控制阈值时,会报Throttling错误码且请求不会被系统正确处理。因此您在构建IaaS架构时,需要考虑调用API的合理性。主要建议如下:
  • 请求聚合

    ECS中部分查询类和操作类的API支持批量的查询或操作,在使用这类接口时尽可能批量完成资源的查询或操作。

  • 调用频率
    在需要检查资源状态的流程中,注意每次调用API的请求间隔,您可以采用固定间隔或者反向退避的方式。例如:
    • 常见的状态检查(资源的启动、停止等状态)间隔时间为1s~2s。
    • 反向退避是指您可以在资源操作后的若干秒内不进行状态检查,然后逐渐增加检查频率,直到达到固定的1s~2s间隔时间。
  • 退避策略

    在调用接口并返回流量控制的错误码后,相同的接口请求需要退避策略。在退避时,同一阿里云账号的同一接口调用可以采取1 QPS速度进行可用性探测。

云资源维度的流量控制说明

对于ECS的创建实例操作接口CreateInstance和RunInstances,除去API级别的流量控制外,还存在创建资源量的限制。对于同一个阿里云账号,在1分钟内创建ECS实例的数量不能大于5000台,且实际在1分钟内提交创建实例操作的请求,可能需要大于1分钟的时间完成实例的交付(即实例达到运行状态)。
说明 在1分钟内创建ECS实例的数量不能大于5000台的限制,是指1分钟内提交的创建请求中的实例数量,并不指已创建并已处于运行中的ECS实例数量。