流量控制

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

查看API流量控制

您可以通过API速率配额找到并单击云服务器 ECS,查看不同的云服务器ECS API的流量控制阈值。

image.png

说明

云服务器ECS目前仅支持查询部分API的流量控制阈值。

流量控制范围说明

  • 云服务器ECS的API访问流量受到严格的控制和限制。所有的API都启用了访问流量控制机制,并根据地域和具体的API接口进行划分和区分。不同地域和不同接口会有不同的流量控制阈值。

  • 对于同一个阿里云账号,在不同地域内调用特定接口的访问流量不能超过系统设定的阈值。如果超出阈值,API调用请求会在单位时间内被系统拒绝。

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

流量控制规则说明

API访问流量控制的规则说明如下:

  • 不同接口的流量控制各自独立计算,单个接口达到流量控制阈值时不会影响其他接口的调用,也不会影响该接口在其他地域下的正常使用。

  • 如果某一接口在第T分钟时被流量控制,则该接口需要在第T+1分钟时才会被允许继续调用。

  • 如果使用SDK或CLI等运维方式调用API时被流量控制并报错,相应的功能在云服务控制台操作中也会受到流量控制。

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

调用合理化建议

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

  • 请求聚合

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

  • 调用频率

    在需要检查资源状态的流程中,注意每次调用API的请求间隔,您可以采用固定间隔或者反向退避的方式。例如:

    • 常见的状态检查(资源的启动、停止等状态)间隔时间为1s~2s。

    • 反向退避是指您可以在资源操作后的若干秒内不进行状态检查,然后逐渐增加检查频率,直到达到固定的1s~2s间隔时间。

  • 退避策略

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