

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

# 在沒有 的情況下卡在 RUNNABLE 中任務的常見原因 `statusReason`
<a name="job_stuck_in_runnable_common_causes"></a>

如果您未從 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 規格](batch-ami-spec.md)及[教學課程：建立運算資源 AMI](create-batch-ami.md)。

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

**運算資源無法存取網際網路**  
運算資源需要存取，才可以與 Amazon ECS 服務端點通訊。可透過介面 VPC 端點或透過具備公有 IP 地址的運算資源來實現。  
如需介面 VPC 端點的詳細資訊，請參閱 *Amazon Elastic Container Service 開發人員指南*中的 [Amazon ECS 介面 VPC 端點 (AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/vpc-endpoints.html)。  
如果您沒有設定介面 VPC 端點，且運算資源沒有公有 IP 地址，則它們必須使用網路地址轉譯 (NAT) 來提供此存取。如需詳細資訊，請參閱 *Amazon VPC 使用者指南*中的 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。如需詳細資訊，請參閱[建立 VPC](create-a-vpc.md)。

**已達到 Amazon EC2 執行個體限制**  
您的帳戶可以在 中啟動的 Amazon EC2 執行個體數量 AWS 區域 取決於您的 EC2 執行個體配額。某些執行個體類型也有per-instance-type配額。如需帳戶 Amazon EC2 執行個體配額的詳細資訊，包括如何請求提高限制，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 服務限制](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html)。 *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 容器代理](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_agent.html)程式。 **

**啟動範本中長時間執行的使用者資料指令碼**  
如果您的啟動範本包含需要很長時間才能完成的使用者資料指令碼，執行個體可能會在向 Amazon ECS 註冊之前逾時。發生這種情況時，執行個體永遠無法用於接收任務，讓所有任務停滯在 `RUNNABLE` 狀態。所有使用者資料指令碼都必須完成，執行個體才能向 Amazon ECS 註冊並開始執行任務。  
若要解決此問題，請檢閱啟動範本使用者資料是否有長時間執行或封鎖的操作。考慮最佳化指令碼以縮短執行時間、非同步執行非關鍵操作，或將初始化邏輯完全移出使用者資料。如需詳細資訊，請參閱[搭配 使用 Amazon EC2 啟動範本 AWS Batch](launch-templates.md)。

如需詳細資訊，請參閱[為什麼我的 AWS Batch 任務卡在 `RUNNABLE` 狀態？](https://aws.amazon.com/premiumsupport/knowledge-center/batch-job-stuck-runnable-status/) *re：Post* 中的 。