

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 性能数据
<a name="performance-data"></a>

 虚拟等候室 AWS 已使用名为 [Locust](https://locust.io/) 的工具进行了负载测试。模拟事件的大小从 10,000 到 100,000 个客户端不等。负载测试环境由以下配置组成：
+  Locust 2.x 具有针对云部署的自定义设置 AWS 
+  四个 AWS 区域 (`us-west-1`、`us-west-2`、`us-east-1`、`us-east-2`) 
+  每个区域 10 个`c5.4xlarge`亚马逊 EC2 主机（共计 40 个） 
+  每台主机 32 个蝗虫进程 
+  模拟用户平均分布在 1,280 个进程中 

 每个用户进程的 end-to-end API 测试步骤：

1.  致电`assign_queue_num`并获取请求编号。

1.  使用请求 ID `queue_num` 进行循环，直到它返回用户的队列位置（短时间）。

1.  循环`serving_num`直到返回值大于等于用户的队列位置（很长时间）。

1.  很少打电话`waiting_room_size`来检索等待的用户数量。

1.  致电`generate_token`并接收 JWT 以在目标站点中使用。

## 调查发现
<a name="findings"></a>

 通过等候室可以处理的客户数量没有实际的上限。

 用户进入等候室的速度会影响 Lambda 函数部署区域的 Lambda 函数并发运行配额。

 负载测试无法超过默认的 API Gateway 请求限制，即每秒 10,000 个请求，且使用了缓存策略 CloudFront。

 `get_queue_num`Lambda 函数的调用率与进入等候室的用户速率接近 1:1。由于并发限制或突发限制，此 Lambda 函数可能会在用户访问频率较高时受到限制。由大量 Lambda 函数调用引起的限制可能会作为`get_queue_num`副作用影响其他 Lambda 函数。如果客户端软件能够使用重试/退缩逻辑对此类临时缩放错误做出适当的响应，则整个系统将继续运行。

 由核心堆栈在默认配额配置中配置的 CloudFront 分发可以处理容纳 250,000 个用户的等候室，每个用户至少每秒轮询一次 `serving_num` API。