本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對 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 容量,且尚未達到服務配額。
診斷步驟:
使用 DescribeExpressGatewayService 取得 DescribeServiceRevisions 遵循的目前服務修訂,以便 ServiceRevision 取得佈建或取消佈建的狀態
檢查 Amazon ECS 主控台中的服務事件,以取得詳細的錯誤訊息。
檢查容器連接埠是否已正確設定
檢查 Amazon ECS 和 Fargate AWS 的服務配額。
任務啟動失敗
症狀:任務無法啟動或在啟動後立即停止。
常見原因:
-
應用程式錯誤 - 容器應用程式因組態或執行時間錯誤而結束。
-
運作狀態檢查失敗 - 應用程式不會回應預期連接埠或路徑上的運作狀態檢查。
-
資源限制 - 應用程式的 CPU 或記憶體配置不足。
-
缺少環境變數或秘密 - 應用程式無法使用必要的組態。
解決步驟:
-
檢查 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 確認運作狀態檢查路徑傳回 HTTP 200 狀態。
在本機測試容器映像,以確保其正確啟動。
視需要檢閱和調整 CPU 和記憶體配置。
連線問題
應用程式無法透過負載平衡器連線
徵狀:應用程式 URL 會傳回逾時或連線錯誤。
故障診斷步驟:
-
驗證您的資源已完成佈建
-
確認任務正在執行且運作狀態良好:
aws ecs describe-services --cluster my-cluster --services my-express-service -
檢查 Application Load Balancer 目標群組運作狀態:
aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:region:account:targetgroup/name/id -
確保應用程式正在接聽容器中的正確連接埠。
效能問題
回應時間緩慢
症狀:應用程式回應比預期慢。
診斷方法:
-
監控 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 檢閱應用程式日誌是否有錯誤或效能警告。
檢查自動擴展是否適當地回應載入。
分析請求分佈的負載平衡器指標。
最佳化策略:
如果資源受限,請增加 CPU 或記憶體配置。
調整自動擴展閾值以提早擴展。
最佳化應用程式程式碼和資料庫查詢。
自動擴展無法如預期運作
症狀:服務不會在高負載期間縱向擴展,也不會在低負載期間縱向擴展。
故障診斷步驟:
-
檢查自動擴展政策及其組態:
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-express-service 檢閱 CloudWatch 指標,以確保符合擴展觸發條件。
確認服務具有擴展的許可 (檢查 IAM 角色)。
檢查任何擴展活動及其結果。
監控和偵錯工具
使用 CloudWatch Container Insights
啟用 Container Insights 進行全面監控:
aws ecs put-account-setting --name containerInsights --value enabled
Container Insights 提供:
CPU、記憶體、磁碟和網路指標
效能監控儀表板
日誌相互關聯和分析
異常偵測