

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 效能資料
<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` Amazon EC2 主機 （總計 40 個） 
+  每個主機 32 個 Locust 程序 
+  模擬使用者平均分散在 1，280 個程序中 

 每個使用者程序的end-to-end測試步驟：

1.  呼叫 `assign_queue_num`並接收請求 ID。

1.  `queue_num` 使用請求 ID 進行迴圈，直到傳回使用者的佇列位置 （短時間）。

1.  循環`serving_num`直到傳回的值 >= 使用者的佇列位置 （長時間）。

1.  不常呼叫 `waiting_room_size`來擷取等待中的使用者數量。

1.  呼叫 `generate_token`並接收 JWT 以在目標網站中使用。

## 問題清單
<a name="findings"></a>

 可透過等候室處理的用戶端數量沒有實際上限。

 使用者進入等待室的速率會影響部署所在區域的 Lambda 函數並行執行配額。

 負載測試無法超過每秒 10，000 個請求的預設 API Gateway 請求限制，且快取政策會與 CloudFront 搭配使用。

 `get_queue_num` Lambda 函數的調用率接近 1：1，接近對等待室的傳入使用者率。由於並行限制或爆量限制，此 Lambda 函數可能會在高速率的傳入使用者期間受到調節。大量 `get_queue_num` Lambda 函數調用所造成的調節，可能會影響其他 Lambda 函數，進而產生副作用。如果用戶端軟體可以使用重試/退避邏輯適當回應這種暫時擴展錯誤，整體系統會繼續運作。

 預設配額組態中核心堆疊設定的 CloudFront 分佈可以處理擁有 250，000 名使用者的等待室，每個使用者至少每秒輪詢一次 `serving_num` API。