我的 Amazon Elastic Container Service (Amazon ECS) 任務已從目標群組取消註冊。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
如果您的 Amazon ECS 任務已從目標群組中取消註冊,請檢查任務是否有錯誤訊息。或者,執行以下 describe-tasks AWS CLI 命令:
aws ecs describe-tasks \
--cluster cluster-name \
--tasks task-ARN
**注意:**將 cluster-name 替換為叢集名稱,將 task-ARN 替換為您的任務 ARN。停止任務的詳細資訊僅在任務停止後 1 小時內可用。
檢查命令輸出中的 exitCode、reason、stopCode 和 stopedReason,然後對已停止的任務進行疑難排解。
檢查任務中是否有必要的容器已結束
所有任務必須至少具有一個必要容器。如果必要容器發生失敗或停止,Amazon ECS 將停止任務中的所有容器。若要進一步調查,請檢查您的應用程式日誌。
如果您的任務使用 awslogs 日誌驅動程式,請執行以下 get-log-events 命令來檢查 Amazon CloudWatch 中的應用程式日誌:
aws logs get-log-events \
--log-group-name awslogs-group \
--log-stream-name awslogs-stream-prefix/container-name/task-id
**注意:**將 awslogs-group 替換為日誌群組名稱,將 awslogs-stream-prefix 替換為日誌串流名稱,將 container-name 替換為容器名稱,將 task-id 替換為任務 ID。
如需將日誌傳送至 CloudWatch 的任務定義範例,請參閱 Amazon ECS 任務定義範例: 將日誌路由到 CloudWatch。
檢查 OutofMemory 問題
如果容器的程序耗用的記憶體超過您在任務定義中分配的記憶體量,則您的任務容器將結束。
若要解決此問題,請為容器分配更多記憶體。最佳做法是在非生產環境中進行負載測試和微調記憶體參數。逐步增加記憶體,然後監控效能也是最佳做法。例如,將 256 MB 增加到 512 MB。當您更新任務記憶體時,也請檢查您的 CPU 分配。如需詳細資訊,請參閱 Amazon EC2 任務大小的最佳做法。
若要更新記憶體,請檢查您是否在容器或任務定義中定義了記憶體。更新任務定義,然後更新服務以使用新的任務定義修訂版本。監控服務,以確認任務定義使用新的記憶體設定成功部署。
如需更多疑難排解步驟,請參閱如何對 Amazon ECS 中的 OutOfMemory 錯誤進行疑難排解?
檢查您的運作狀態檢查設定
若要對 AWS Fargate 任務的運作狀態檢查失敗問題進行疑難排解,請參閱如何對 Fargate 上 Amazon ECS 任務的運作狀態檢查失敗問題進行疑難排解?
當任務的 Elastic Load Balancing (ELB) 運作狀態檢查失敗時,可能會發生取消註冊錯誤,並且您會收到以下其中一個錯誤:
- 「(服務 AWS-service) (連接埠 8080) 在 (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) 中的運作狀態不良,(原因在於這些程式碼的運作狀態檢查失敗:[5xx]/[4xx]/[3xx]) 或 (請求逾時)。」
- 「(服務 AWS-Service) (任務 eaa3ec9e9f104070b461490987654321) 容器運作狀態檢查失敗。」
- 「(服務 AWS-Service) (執行個體 10.122.144.145) (連接埠 8080) 在 (target-group arn:aws:elasticloadbalancing:ap-south-1:120987654321:targetgroup/AWS-Service-TG/159c835dc9d8cf84) 的運作狀態不良,(原因在於目標位於未啟用負載平衡器的可用區域)。」
您也可能會在 Amazon ECS 主控台中收到以下錯誤:
「(target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) 中任務失敗的 ELB 運作狀態檢查」
若要解決此問題,請確認您在目標群組運作狀態檢查中設定的端點是準確的。
如果您的 Amazon ECS 任務對運作狀態檢查的回應較慢,則最佳做法是增加 healthCheckGracePeriodSeconds 參數的值。此外,使用慢啟動模式讓目標在負載平衡器向其發送運作狀態檢查請求之前預熱。
檢查您的任務和服務組態
檢查您服務的 CPU 和記憶體指標。高資源使用率可能會導致您的應用程式無回應,並導致 5xx 錯誤。若要解決這些 Fargate 和 Amazon EC2 啟動類型的任務所遇到的問題,請參閱如何監控 Fargate 上 Amazon ECS 任務的高記憶體使用率?
確認任務的彈性網路介面或容器執行個體安全群組是否允許來自負載平衡器的流量通過您網路模式所需的連接埠:
- 如果是 awsvpc 網路模式,請允許您在任務定義中定義為 containerPort 的連接埠。
- 如果是橋接網路模式,請允許臨時連接埠 (32768-60999)。
相關資訊
Amazon ECS 停止任務錯誤訊息
為 Amazon ECS 使用 Application Load Balancer
Amazon Elastic Container Service 中的記錄和監控