View a markdown version of this page

在沒有 的情況下卡在 RUNNABLE 中任務的常見原因 statusReason - AWS Batch

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

在沒有 的情況下卡在 RUNNABLE 中任務的常見原因 statusReason

如果您未從 CloudWatch Events 收到事件,或收到不明原因事件,以下是此問題的一些常見原因。

您的運算資源上未設定awslogs日誌驅動程式

AWS Batch 任務會將日誌資訊傳送至 CloudWatch Logs。若要啟用此功能,您必須設定運算資源使用 awslogs 日誌驅動程式。假設您從 Amazon ECS 最佳化 AMI (或 Amazon Linux) 基礎運算資源 AMI。然後,此驅動程式預設會向 ecs-init套件註冊。現在假設您使用不同的基本 AMI。然後,您必須驗證在 Amazon ECS 容器代理程式啟動時,awslogs日誌驅動程式已指定為具有 ECS_AVAILABLE_LOGGING_DRIVERS環境變數的可用日誌驅動程式。如需詳細資訊,請參閱運算資源 AMI 規格教學課程:建立運算資源 AMI

資源不足

如果您的任務定義指定比運算資源可配置更多的 CPU 或記憶體資源,則不會放置您的任務。例如,假設您的任務指定 4 GiB 的記憶體,而且您的運算資源少於可用的記憶體。然後,任務便無法放置在這些運算資源上。在此情況下,您必須減少任務定義中所指定的記憶體,或在環境中加入更多運算資源。有些記憶體保留給 Amazon ECS 容器代理程式和其他關鍵系統程序。如需詳細資訊,請參閱運算資源記憶體管理

運算資源無法存取網際網路

運算資源需要存取,才可以與 Amazon ECS 服務端點通訊。可透過介面 VPC 端點或透過具備公有 IP 地址的運算資源來實現。

如需介面 VPC 端點的詳細資訊,請參閱 Amazon Elastic Container Service 開發人員指南中的 Amazon ECS 介面 VPC 端點 (AWS PrivateLink)

如果您沒有設定介面 VPC 端點,且運算資源沒有公有 IP 地址,則它們必須使用網路地址轉譯 (NAT) 來提供此存取。如需詳細資訊,請參閱 Amazon VPC 使用者指南中的 NAT 閘道。如需詳細資訊,請參閱建立 VPC

已達到 Amazon EC2 執行個體限制

您的帳戶可以在 中啟動的 Amazon EC2 執行個體數量 AWS 區域 取決於您的 EC2 執行個體配額。某些執行個體類型也有per-instance-type配額。如需帳戶 Amazon EC2 執行個體配額的詳細資訊,包括如何請求提高限制,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 服務限制Amazon EC2

未安裝 Amazon ECS 容器代理程式

Amazon ECS 容器代理程式必須安裝在 Amazon Machine Image (AMI) 上,才能讓 AWS Batch 執行任務。根據預設,Amazon ECS 容器代理程式會安裝在 Amazon ECS 最佳化 AMIs上。如需 Amazon ECS 容器代理程式的詳細資訊,請參閱《Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS 容器代理程式。

啟動範本中長時間執行的使用者資料指令碼

如果您的啟動範本包含需要很長時間才能完成的使用者資料指令碼,執行個體可能會在向 Amazon ECS 註冊之前逾時。發生這種情況時,執行個體永遠無法用於接收任務,讓所有任務停滯在 RUNNABLE 狀態。所有使用者資料指令碼都必須完成,執行個體才能向 Amazon ECS 註冊並開始執行任務。

若要解決此問題,請檢閱啟動範本使用者資料是否有長時間執行或封鎖的操作。考慮最佳化指令碼以縮短執行時間、非同步執行非關鍵操作,或將初始化邏輯完全移出使用者資料。如需詳細資訊,請參閱搭配 使用 Amazon EC2 啟動範本 AWS Batch

如需詳細資訊,請參閱為什麼我的 AWS Batch 任務卡在 RUNNABLE 狀態? re:Post 中的 。