對 Amazon ECS Express Mode 服務進行故障診斷 - Amazon Elastic Container Service

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

對 Amazon ECS Express Mode 服務進行故障診斷

本節可協助您識別並解決部署和管理快速模式服務時的常見問題。

部署問題

服務卡在 ACTIVE 或 DRAINING 狀態

徵狀:DescribeServiceRevisions 顯示資源仍在佈建或取消佈建。DescribeServices 顯示部署未穩定

可能的原因和解決方案:

  • IAM 許可不足 - 確認任務執行角色和基礎設施角色具有必要的許可,如其各自的受管政策所示。

    # Check if the role has the required managed policy aws iam list-attached-role-policies --role-name ecsTaskExecutionRole
  • 映像提取失敗 - 確保容器映像存在且可存取。

    # Test image pull manually docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-app:latest
  • 網路連線問題 - 檢查子網路是否具有 AWS 服務的網際網路存取或 Amazon VPC 端點。

  • 資源限制 - 確認您的帳戶有足夠的 Fargate 容量,且尚未達到服務配額。

診斷步驟:

  1. 使用 DescribeExpressGatewayService 取得 DescribeServiceRevisions 遵循的目前服務修訂,以便 ServiceRevision 取得佈建或取消佈建的狀態

  2. 檢查 Amazon ECS 主控台中的服務事件,以取得詳細的錯誤訊息。

  3. 檢查容器連接埠是否已正確設定

  4. 檢查 Amazon ECS 和 Fargate AWS 的服務配額。

任務啟動失敗

症狀:任務無法啟動或在啟動後立即停止。

常見原因:

  • 應用程式錯誤 - 容器應用程式因組態或執行時間錯誤而結束。

  • 運作狀態檢查失敗 - 應用程式不會回應預期連接埠或路徑上的運作狀態檢查。

  • 資源限制 - 應用程式的 CPU 或記憶體配置不足。

  • 缺少環境變數或秘密 - 應用程式無法使用必要的組態。

解決步驟:

  1. 檢查 CloudWatch Logs 中的應用程式日誌,從 DescribeServiceRevisions 取得日誌群組名稱:

    aws logs describe-log-streams --log-group-name /ecs/express-service-my-app aws logs get-log-events --log-group-name /ecs/express-service-my-app --log-stream-name stream-name
  2. 確認運作狀態檢查路徑傳回 HTTP 200 狀態。

  3. 在本機測試容器映像,以確保其正確啟動。

  4. 視需要檢閱和調整 CPU 和記憶體配置。

連線問題

應用程式無法透過負載平衡器連線

徵狀:應用程式 URL 會傳回逾時或連線錯誤。

故障診斷步驟:

  1. 驗證您的資源已完成佈建

  2. 確認任務正在執行且運作狀態良好:

    aws ecs describe-services --cluster my-cluster --services my-express-service
  3. 檢查 Application Load Balancer 目標群組運作狀態:

    aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:region:account:targetgroup/name/id
  4. 確保應用程式正在接聽容器中的正確連接埠。

效能問題

回應時間緩慢

症狀:應用程式回應比預期慢。

診斷方法:

  1. 監控 CPU 和記憶體使用率:

    # Check CloudWatch metrics for the service aws cloudwatch get-metric-statistics \ --namespace AWS/ECS \ --metric-name CPUUtilization \ --dimensions Name=ServiceName,Value=my-express-service Name=ClusterName,Value=my-cluster \ --start-time 2024-01-01T00:00:00Z \ --end-time 2024-01-01T01:00:00Z \ --period 300 \ --statistics Average
  2. 檢閱應用程式日誌是否有錯誤或效能警告。

  3. 檢查自動擴展是否適當地回應載入。

  4. 分析請求分佈的負載平衡器指標。

最佳化策略:

  • 如果資源受限,請增加 CPU 或記憶體配置。

  • 調整自動擴展閾值以提早擴展。

  • 最佳化應用程式程式碼和資料庫查詢。

自動擴展無法如預期運作

症狀:服務不會在高負載期間縱向擴展,也不會在低負載期間縱向擴展。

故障診斷步驟:

  1. 檢查自動擴展政策及其組態:

    aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-express-service
  2. 檢閱 CloudWatch 指標,以確保符合擴展觸發條件。

  3. 確認服務具有擴展的許可 (檢查 IAM 角色)。

  4. 檢查任何擴展活動及其結果。

監控和偵錯工具

使用 CloudWatch Container Insights

啟用 Container Insights 進行全面監控:

aws ecs put-account-setting --name containerInsights --value enabled

Container Insights 提供:

  • CPU、記憶體、磁碟和網路指標

  • 效能監控儀表板

  • 日誌相互關聯和分析

  • 異常偵測