본문 바로가기
Infra, Cloud/AWS

[AWS] unable to start container process: container init was OOM-killed - ECS Task Container 에러

by J4J 2022. 11. 2.
300x250
반응형

안녕하세요. J4J입니다.

 

 

 

ECS Cluster를 생성한 뒤 Task를 정의하여 서비스에 등록하는 작업을 하다가 다음과 같은 에러를 마주했습니다.

 

CannotStartContainerError: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: container init was OOM-killed (memory limit too low?): unknown

ECS 에러

 

 

 

로그를 확인해보면 메모리 문제라는 걸 명확하게 알 수 있었고, Amazon 공식문서를 확인해보면 다음과 같은 얘기를 확인할 수 있었습니다.

 

  • 실행 중인 컨테이너가 호스트 머신의 메모리 대부분을 사용하지 않도록 해야 합니다.
  • 컨테이너가 일정량 이하의 사용자 또는 시스템 메모리를 사용할 수 있도록 하는 하드 메모리 제한
  • 메모리 부족이나 호스트 머신의 경합과 같은 특정 조건이 발생하지 않는 한 컨테이너가 필요한 만큼의 메모리를 사용할 수 있도록 하는 소프트 제한

 

 

반응형

 

 

우선 저의 상황을 생각해봤을 때 컨테이너가 호스트 메모리의 대부분을 차지하지는 않았습니다.

 

왜냐하면, EC2 인스턴스는 t2.micro를 사용하여 호스트가 활용 가능한 메모리는 1GiB이지만 Task에서 사용 가능한 작업 메모리 크기를 아래와 같이 1MiB로 설정했기 때문입니다.

 

Task 메모리 설정

 

 

 

그래서 생각이 든 것은 호스트 메모리의 대부분을 차지하는 것의 반대 케이스입니다.

 

즉, 컨테이너가 동작되기에 부족한 작업 메모리를 설정한것이라고 생각했습니다.

 

테스트하기 위해 작업 메모리 크기를 다음과 같이 512MiB로 높여봤습니다.

 

Task 메모리 수정

 

 

728x90

 

 

그런 뒤 다시 서비스에 등록하여 동작시켰더니 다음과 같이 에러 없이 정상적으로 실행되는 것을 확인할 수 있었습니다.

 

ECS 정상 동작

 

728x90
반응형

댓글