

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# `RUNNABLE` 상태에서 정체된 작업
<a name="job_stuck_in_runnable"></a>

컴퓨팅 환경에 컴퓨팅 리소스가 포함되어 있지만 작업이 `RUNNABLE` 상태 이상으로 진행되지 않는다고 가정해 보겠습니다. 이 경우 무언가가 작업을 컴퓨팅 리소스에 배치하지 못하게 하여 작업 대기열이 차단되고 있을 가능성이 높습니다. 다음은 작업이 차례를 기다리고 있는지 아니면 대기열을 차단하고 있는지 확인하는 방법입니다.

가 헤드에 `RUNNABLE` 작업이 있고 대기열을 차단했음을 AWS Batch 감지하면 Amazon CloudWatch Events에서 사유와 함께 [작업 대기열 차단 이벤트](batch-job-queue-blocked-events.md) 이벤트를 수신합니다. 동일한 이유가 `[ListJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_ListJobs.html)` 및 `[DescribeJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html)` API 호출의 일부로 `statusReason` 필드에도 업데이트됩니다.

선택적으로 `[CreateJobQueue](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateJobQueue.html)` 및 [https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateJobQueue.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateJobQueue.html) API 작업을 통해 `jobStateTimeLimitActions` 파라미터를 구성할 수 있습니다.

**참고**  
현재 Amazon ECS, Amazon EKS 또는 Fargate 컴퓨팅 환경에 연결된 작업 대기열의 경우와 함께 사용할 수 있는 유일한 작업은 작업을 취소하는 `jobStateLimitActions.action` 것입니다.

`jobStateTimeLimitActions` 파라미터는가 특정 상태의 작업에 대해 AWS Batch 수행하는 작업 세트를 지정하는 데 사용됩니다. `maxTimeSeconds` 필드를 통해 초 단위로 시간 임곗값을 설정할 수 있습니다.

작업이 정의된 `RUNNABLE` 상태인 경우는가 경과`maxTimeSeconds`한 후 지정된 작업을 `statusReason` AWS Batch 수행합니다.

예를 들어, 충분한 용량을 사용할 수 있을 때까지 대기 중인 `RUNNABLE` 상태의 모든 작업이 최대 4시간 동안 대기하도록 `jobStateTimeLimitActions` 파라미터를 설정할 수 있습니다. 작업을 취소`CAPACITY:INSUFFICIENT_INSTANCE_CAPACITY`하고 다음 작업이 작업 대기열의 헤드`statusReason`로 이동하도록 허용하기 전에 `maxTimeSeconds`를 로 설정하고를 14400으로 설정하여이 작업을 수행할 수 있습니다.

다음은 작업 대기열이 차단된 것을 감지할 때가 AWS Batch 제공하는 이유입니다. 이 목록은 `ListJobs` 및 `DescribeJobs` API 작업에서 반환되는 메시지를 제공합니다. 또한 동일한 값을 `jobStateLimitActions.statusReason` 파라미터에 대해 정의할 수 있습니다.

1. **이유:** 연결된 모든 컴퓨팅 환경에 용량 부족 오류가 있습니다. 요청되면 용량 부족 오류가 발생하는 Amazon EC2 인스턴스를 AWS Batch 감지합니다. 작업을 수동으로 취소하면 후속 작업이 대기열의 헤드로 이동할 수 있습니다.
   + **작업이 멈춘 동안 `statusReason` 메시지:** `CAPACITY:INSUFFICIENT_INSTANCE_CAPACITY - Service cannot fulfill the capacity requested for instance type [instanceTypeName]`
   + **`jobStateTimeLimitActions`에 사용되는 `reason`:** `CAPACITY:INSUFFICIENT_INSTANCE_CAPACITY`
   + **작업이 취소된 후 `statusReason` 메시지:** `Canceled by JobStateTimeLimit action due to reason: CAPACITY:INSUFFICIENT_INSTANCE_CAPACITY`

   **참고:**

   1. 이 감지가 작동하려면 AWS Batch 서비스 역할에 `autoscaling:DescribeScalingActivities` 권한이 필요합니다. [에 대한 서비스 연결 역할 사용 AWS Batch](using-service-linked-roles.md) 서비스 연결 역할(SLR) 또는 [AWS 관리형 정책: **AWSBatchServiceRole** 정책](security-iam-awsmanpol.md#security-iam-awsmanpol-AWSBatchServiceRolePolicy) 관리형 정책을 사용하는 경우 권한 정책이 업데이트되므로 다른 조치를 취할 필요가 없습니다.

   1. SLR 또는 관리형 정책을 사용하는 경우 `RUNNABLE` 상태일 때 차단된 작업 대기열 이벤트와 업데이트된 작업 상태를 수신할 수 있도록 `autoscaling:DescribeScalingActivities` 및 `ec2:DescribeSpotFleetRequestHistory` 권한을 추가해야 합니다. 또한 AWS Batch 는 작업 대기열에 구성된 경우에도 `jobStateTimeLimitActions` 파라미터를 통해 `cancellation` 작업을 수행할 수 있도록 이러한 권한이 필요합니다.

   1. 다중 노드 병렬(MNP) 작업의 경우 연결된 우선 순위가 높은 Amazon EC2 컴퓨팅 환경에 `insufficient capacity` 오류가 발생하면 우선 순위가 낮은 컴퓨팅 환경에 이 오류가 발생하더라도 대기열이 차단됩니다.

1. **이유:** 모든 컴퓨팅 환경에는 작업 요구 사항보다 작은 [https://docs.aws.amazon.com/batch/latest/APIReference/API_ComputeResource.html#Batch-Type-ComputeResource-maxvCpus](https://docs.aws.amazon.com/batch/latest/APIReference/API_ComputeResource.html#Batch-Type-ComputeResource-maxvCpus) 파라미터가 있습니다. 수동으로 또는 `statusReason`에 `jobStateTimeLimitActions` 파라미터를 설정하여 작업을 취소하면 후속 작업이 대기열의 상단으로 이동할 수 있습니다. 선택적으로, 차단된 작업의 요구 사항을 충족하도록 기본 컴퓨팅 환경의 `maxvCpus` 파라미터를 늘릴 수 있습니다.
   + **작업이 멈춘 동안 `statusReason` 메시지:** `MISCONFIGURATION:COMPUTE_ENVIRONMENT_MAX_RESOURCE - CE(s) associated with the job queue cannot meet the CPU requirement of the job.`
   + **`jobStateTimeLimitActions`에 사용되는 `reason`:** `MISCONFIGURATION:COMPUTE_ENVIRONMENT_MAX_RESOURCE`
   + **작업이 취소된 후 `statusReason` 메시지:** `Canceled by JobStateTimeLimit action due to reason: MISCONFIGURATION:COMPUTE_ENVIRONMENT_MAX_RESOURCE`

1. **이유:** 작업 요구 사항을 충족하는 인스턴스가 있는 컴퓨팅 환경이 없습니다. 작업이 리소스를 요청하면는 연결된 컴퓨팅 환경이 수신 작업을 수용할 수 없음을 AWS Batch 감지합니다. 수동으로 또는 `statusReason`에 `jobStateTimeLimitActions` 파라미터를 설정하여 작업을 취소하면 후속 작업이 대기열의 상단으로 이동할 수 있습니다. 선택적으로, 컴퓨팅 환경의 허용되는 인스턴스 유형을 재정의하여 필요한 작업 리소스를 추가할 수 있습니다.
   + **작업이 멈춘 동안 `statusReason` 메시지:** ` MISCONFIGURATION:JOB_RESOURCE_REQUIREMENT - The job resource requirement (vCPU/memory/GPU) is higher than that can be met by the CE(s) attached to the job queue.`
   + **`jobStateTimeLimitActions`에 사용되는 `reason`:** `MISCONFIGURATION:JOB_RESOURCE_REQUIREMENT`
   + **작업이 취소된 후 `statusReason` 메시지:** `Canceled by JobStateTimeLimit action due to reason: MISCONFIGURATION:JOB_RESOURCE_REQUIREMENT`

1. **이유:** 모든 컴퓨팅 환경에 서비스 역할 문제가 있습니다. 이 문제를 해결하려면 서비스 역할 권한을 [AWS 에 대한 관리형 정책 AWS Batch](security-iam-awsmanpol.md) 섹션과 비교하고 모든 차이를 해결합니다. 참고: 이 오류를 해결하기 위해 `jobStateTimeLimitActions` 파라미터를 통해 프로그래밍 가능한 작업을 구성할 수 없습니다.

   유사한 오류를 방지하기 위해 [에 대한 서비스 연결 역할 사용 AWS Batch](using-service-linked-roles.md) 섹션을 사용하는 것이 좋습니다.

   수동으로 또는 `statusReason`에 `jobStateTimeLimitActions` 파라미터를 설정하여 작업을 취소하면 후속 작업이 대기열의 상단으로 이동할 수 있습니다. 서비스 역할 문제를 해결하지 않으면 다음 작업도 차단될 수 있습니다. 이 문제를 수동으로 조사하고 해결하는 것이 좋습니다.
   + **작업이 멈춘 동안 `statusReason` 메시지:** `MISCONFIGURATION:SERVICE_ROLE_PERMISSIONS – Batch service role has a permission issue.`

1.  **이유:** 컴퓨팅 환경에 지원되지 않는 인스턴스 유형 구성이 있습니다. 이는 선택한 가용 영역에서 인스턴스 유형을 사용할 수 없거나 시작 템플릿 또는 시작 구성에 지정된 인스턴스 유형과 호환되지 않는 설정이 포함되어 있는 경우 발생할 수 있습니다. 이 문제를 해결하려면 지정된 AWS 리전 및 가용 영역에서 인스턴스 유형이 지원되는지 확인하고, 시작 템플릿 설정이 인스턴스 유형과 호환되는지 확인하고, 최신 세대 인스턴스 유형으로 업데이트를 고려하세요. 지원되는 인스턴스 유형을 찾는 방법에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [Amazon EC2 인스턴스 유형 찾기](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-discovery.html)를 참조하세요.
   + **작업이 멈춘 동안 `statusReason` 메시지:** `MISCONFIGURATION:EC2_INSTANCE_CONFIGURATION_UNSUPPORTED - Your compute environment associated with this job queue has an unsupported instance type configuration.`

1. **이유:** 모든 컴퓨팅 환경이 유효하지 않습니다. 자세한 내용은 [`INVALID` 컴퓨팅 환경](invalid_compute_environment.md) 단원을 참조하십시오. 참고: 이 오류를 해결하기 위해 `jobStateTimeLimitActions` 파라미터를 통해 프로그래밍 가능한 작업을 구성할 수 없습니다.
   + **작업이 멈춘 동안 `statusReason` 메시지:** `ACTION_REQUIRED - CE(s) associated with the job queue are invalid.`

1. **Reason:** AWS Batch 가 차단된 대기열을 감지했지만 이유를 확인할 수 없습니다. 참고: 이 오류를 해결하기 위해 `jobStateTimeLimitActions` 파라미터를 통해 프로그래밍 가능한 작업을 구성할 수 없습니다. 문제 해결에 대한 자세한 내용은 re:Post의 [AWS에서 RUNNABLE 상태로 내 AWS Batch 작업이 중단된 이유](https://repost.aws/knowledge-center/batch-job-stuck-runnable-status)를 참조하세요.**
   + **작업이 멈춘 동안 `statusReason` 메시지:** `UNDETERMINED - Batch job is blocked, root cause is undetermined.`

CloudWatch Events로부터 이벤트를 받지 못했거나 이유를 알 수 없는 이벤트를 받은 경우 이 문제의 몇 가지 일반적인 원인은 다음과 같습니다.

**컴퓨팅 리소스에 `awslogs` 로그 드라이버가 구성되어 있지 않음**  
AWS Batch 작업은 로그 정보를 CloudWatch Logs로 전송합니다. 이를 위해서는 `awslogs` 로그 드라이버를 사용할 수 있도록 컴퓨팅 리소스를 구성해야 합니다. Amazon ECS에 최적화된 AMI(또는 Amazon Linux)를 기반으로 컴퓨팅 리소스 AMI를 구축한다고 가정해 보겠습니다. 그러면 이 드라이버가 `ecs-init` 패키지에 기본적으로 등록됩니다. 이제 다른 기본 AMI를 사용한다고 가정해 보겠습니다. 그러면 Amazon ECS 컨테이너 에이전트가 시작될 때 `ECS_AVAILABLE_LOGGING_DRIVERS` 환경 변수를 사용하여 `awslogs` 로그 드라이버를 사용 가능한 로그 드라이버로 지정해야 합니다. 자세한 내용은 [컴퓨팅 리소스 AMI 사양](batch-ami-spec.md) 및 [자습서: 컴퓨팅 리소스 AMI 생성](create-batch-ami.md) 섹션을 참조하세요.

**리소스 부족**  
작업 정의에서 CPU 또는 메모리 리소스가 컴퓨팅 리소스가 할당할 수 있는 크기를 초과하여 지정되어 있으면 작업이 배치되지 않습니다. 예를 들어 작업에 4GiB의 메모리가 지정되어 있고 컴퓨팅 리소스의 메모리가 사용 가능한 메모리보다 적다고 가정해 보겠습니다. 그러면 해당 컴퓨팅 리소스에 작업을 배치할 수 없는 경우가 발생합니다. 이러한 경우에는 작업 정의에서 지정한 메모리 크기를 줄이거나, 혹은 용량이 더욱 큰 컴퓨팅 리소스를 환경에 추가해야 합니다. 일부 메모리는 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(Network Address Translation)를 사용하여 이 액세스 권한을 제공해야 합니다. 자세한 내용은 *Amazon VPC 사용 설명서*의 [NAT 게이트웨이](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) 섹션을 참조하세요. 자세한 내용은 [VPC 생성](create-a-vpc.md) 단원을 참조하십시오.

**Amazon EC2 인스턴스 한도 도달**  
계정이에서 시작할 수 있는 Amazon EC2 인스턴스 수는 EC2 인스턴스 할당량에 따라 AWS 리전 결정됩니다. 일부 인스턴스 유형은 인스턴스 유형마다 할당량이 있습니다. 한도 증가를 요청하는 방법을 포함하여 계정의 Amazon EC2 인스턴스 할당량에 대한 자세한 내용은 Amazon EC2 사용 설명서의 [Amazon EC2 서비스 한도](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html)를 참조하세요.**

**Amazon ECS 컨테이너 에이전트가 설치되지 않음**  
 AWS Batch 가 작업을 실행하려면 Amazon Machine Image(AMI) 에 Amazon ECS 컨테이너 에이전트를 설치해야 합니다. Amazon ECS 컨테이너 에이전트는 Amazon ECS에 최적화된 AMI에 기본적으로 설치됩니다. Amazon ECS 컨테이너에 대한 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*의 [Amazon ECS 컨테이너 에이전트](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_agent.html)를 참조하세요.

자세한 내용은 *re:Post*[의 내 AWS Batch 작업이 `RUNNABLE` 상태인 이유는 무엇입니까?](https://aws.amazon.com/premiumsupport/knowledge-center/batch-job-stuck-runnable-status/)를 참조하세요.