View a markdown version of this page

疑難排解 - AWS 上的分散式負載測試

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

疑難排解

已知問題解決提供減輕已知錯誤的指示。如果這些指示無法解決您的問題,請聯絡 AWS Support 提供為此解決方案開啟 AWS Support 案例的說明。

已知問題解決方案

問題:您正在使用現有的 VPC,且測試失敗狀態為失敗,導致下列錯誤訊息:

Test might have failed to run.

  • 解決方法:

確保子網路存在於指定的 VPC 中,並且具有具有網際網路閘道NAT 閘道的網際網路路由。AWS Fargate 需要存取,才能從公有儲存庫提取容器映像,以成功執行測試。

問題:測試執行時間過長或無限期停滯

  • 解決方法:

取消測試並檢查 AWS Fargate,以確保所有任務都已停止。如果尚未停止,請手動停止所有 Fargate 任務。檢查您帳戶的隨需 Fargate 任務限制,以確保您可以啟動所需的任務數量。您也可以檢查 Lambda 任務執行器函數的 CloudWatch 日誌,以深入了解啟動 Fargate 任務時的失敗。檢查 CloudWatch ECS 日誌,了解正在執行的 Fargate 容器中所發生事件的詳細資訊。

問題:測試正在開始,但無法完成或 ECS 任務的狀態不明

  • 解決方法:

如果您選擇在部署解決方案的帳戶中提供現有 VPC 的選項,請確定 ECS 任務使用的 VPC 有足夠的可用 IP 地址,以開始測試輸入中提供的任務數量。ECS 任務定義使用需要網際網路閘道或網際網路路由的 ECR 映像,以便 ECS 服務可以透過從 aws-solutions/distributed-load-testing-on-aws-load-tester 下載解決方案 ECR 映像來佈建任務。如果您無法提供網際網路的路由,因為 VPC 中的所有子網路都是私有的,您可以使用 ECR 提取快取在帳戶中託管 ECR 映像。使用新的 ECR 映像 URI 更新任務定義,並建立新的修訂。任務定義更新後,DynamoDB 資料表中的解決方案組態需要更新,才能使用新的修訂。您可以在金鑰 ScenariosTable 下的 CloudFormation 堆疊輸出索引標籤中找到 DynamoDB 資料表名稱。使用金鑰 testId 和值區域-【SOLUTION-DEPLOYED-REGION】 更新項目的屬性 taskDefinition。

問題:測試需要使用私有或無法透過網際網路閘道使用的端點

  • 解決方法:

測試無法透過網際網路閘道存取的私有 API 端點時,請考慮下列方法:

  1. 網路組態:確保 ECS 任務使用的子網路路由表已更新為要測試之私有端點的 IP 地址範圍的路由。這可讓測試流量到達 VPC 中的私有端點。

  2. DNS 解析:對於自訂網域,請在 VPC 中設定 DNS 設定,以解析私有端點的網域名稱。如需詳細說明,請參閱 VPC DNS 文件。

  3. VPC 端點:如果測試 AWS 服務,請考慮使用 VPC 端點 (AWS PrivateLink) 來建立私有連線。例如,若要測試私有 API Gateway,您可以為 API Gateway 建立 VPC 端點。請參閱私有 API Gateway 文件。

  4. VPC 對等互連:如果私有端點位於不同的 VPC 中,請在部署解決方案的 VPC 與包含私有端點的 VPC 之間建立 VPC 對等互連。在兩個 VPCs中設定適當的路由表。請參閱 VPC 對等互連文件。

  5. 傳輸閘道:對於涉及多個 VPCs的更複雜聯網案例,請考慮使用 AWS Transit Gateway 在解決方案的 VPC 和包含私有端點的 VPC 之間路由流量。請參閱 Transit Gateway 文件。

  6. 安全群組:確保與 ECS 任務相關聯的安全群組允許傳出流量到私有端點,而私有端點的安全群組允許來自 ECS 任務的傳入流量。

若要測試內部 Application Load Balancer 或 EC2 執行個體,請確保 VPC CIDR 範圍不重疊,且已在路由表中設定必要的路由。

問題:測試正在完成,但 UI 上無法使用結果

  • 解決方法:

如果測試已完成,但在 UI 中無法使用結果,則結果檔案應該仍可從執行測試的 ECS 任務,在 S3 儲存貯體中使用。這是 解決方案中的已知限制。在目前的架構中,解決方案會使用結果剖析 Lambda 函數來摘要來自多個 ECS 任務的結果,然後儲存為 DynamoDB 資料表中的項目。DynamoDB 資料表的項目大小上限為 400 KB。根據測試指令碼的複雜性、並行和使用的任務數量,達到此限制。錯誤並不表示測試失敗;它表示摘要結果並將其存放在 DynamoDB 資料表中用於 CRUD 操作的程序已失敗。結果仍可在測試案例的 S3 儲存貯體中使用。

ALB + ECS Fargate 部署問題

問題:ACM 憑證驗證卡在「待定驗證」狀態

  • 解決方法:

如果您使用 DNS 驗證請求公有 ACM 憑證,則必須將 ACM 提供的 CNAME 記錄新增至您的 DNS 組態。導覽至 ACM 主控台,展開憑證詳細資訊,然後將 DNS 驗證記錄新增至網域的 DNS 提供者。如果您使用電子郵件驗證,請檢查與網域相關聯的電子郵件地址,以取得來自 AWS 的驗證電子郵件。如需詳細資訊,請參閱《AWS Certificate Manager 使用者指南》中的 DNS 驗證

問題:Web 主控台在部署後傳回「502 無效的閘道」或「503 服務暫時無法使用」錯誤

  • 解決方法:

EC2 主控台中檢查 ALB 目標群組運作狀態檢查。如果 ECS Fargate 任務顯示為運作狀態不佳,請確認任務在 ECS 主控台中執行,並檢查 CloudWatch 中的任務日誌是否有錯誤。確保連接到 ECS 任務的安全群組允許來自 ALB 安全群組的傳入流量。

問題:已設定 DNS,但自訂網域無法解析為 Web 主控台

  • 解決方法:

確認您的 DNS 供應商已正確設定 CNAME 記錄,將自訂網域 (例如 console.example.com) 映射至 CloudFormation 輸出的 ALB DNS 名稱。DNS 傳播最多可能需要 48 小時,視您的 DNS 供應商和 TTL 設定而定。您可以使用 dig console.example.com CNAME或 驗證 DNS 記錄nslookup console.example.com

問題:Web 主控台在部署後傳回「403 禁止」錯誤

  • 解決方法:

部署在 ALB 前面的 AWS WAF Web ACL 可能會封鎖合法請求。開啟 AWS WAF 主控台,選取與 ALB 相關聯的 Web ACL,然後檢查抽樣請求索引標籤,以識別哪些規則封鎖流量。您可以修改 WAF 規則,以允許封鎖的請求。例如,如果受管規則群組產生誤報,您可以將特定規則動作設定為 Count,而不是 Block,以在記錄流量的同時允許流量。如需詳細資訊,請參閱AWS WAF 開發人員指南》中的測試和調校您的 AWS WAF 保護AWS WAF

無周邊 (自備 Web 伺服器) 部署問題

問題:Web 主控台在連線至 API 時顯示 CORS 錯誤

  • 解決方法:

當您網域上託管的 Web 主控台嘗試呼叫解決方案的 API Gateway 端點時,會發生跨來源資源共用 (CORS) 錯誤。請確定您的 Web 伺服器透過 HTTPS 為主控台提供服務,因為 API Gateway 端點需要 HTTPS。確認 Web 伺服器的原始網域符合 API Gateway CORS 設定中設定的允許原始伺服器。如果您使用的是自訂網域,您可能需要更新 API Gateway CORS 組態以包含您的網域。

問題:Web 主控台載入但身分驗證失敗或重新導向不正確

  • 解決方法:

Web 主控台資產包含具有 Cognito 使用者集區設定和 API 端點 URL 的組態檔案。確認擷取期間未修改此組態檔案。確保您的 Web 伺服器透過 HTTPS 為主控台提供服務,因為 Cognito 需要 HTTPS 進行回URLs。檢查 Cognito 應用程式用戶端回呼 URL 是否包含 Web 伺服器的網域。