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
로그를 확인해보면 메모리 문제라는 걸 명확하게 알 수 있었고, Amazon 공식문서를 확인해보면 다음과 같은 얘기를 확인할 수 있었습니다.
- 실행 중인 컨테이너가 호스트 머신의 메모리 대부분을 사용하지 않도록 해야 합니다.
- 컨테이너가 일정량 이하의 사용자 또는 시스템 메모리를 사용할 수 있도록 하는 하드 메모리 제한
- 메모리 부족이나 호스트 머신의 경합과 같은 특정 조건이 발생하지 않는 한 컨테이너가 필요한 만큼의 메모리를 사용할 수 있도록 하는 소프트 제한
반응형
우선 저의 상황을 생각해봤을 때 컨테이너가 호스트 메모리의 대부분을 차지하지는 않았습니다.
왜냐하면, EC2 인스턴스는 t2.micro를 사용하여 호스트가 활용 가능한 메모리는 1GiB이지만 Task에서 사용 가능한 작업 메모리 크기를 아래와 같이 1MiB로 설정했기 때문입니다.
그래서 생각이 든 것은 호스트 메모리의 대부분을 차지하는 것의 반대 케이스입니다.
즉, 컨테이너가 동작되기에 부족한 작업 메모리를 설정한것이라고 생각했습니다.
테스트하기 위해 작업 메모리 크기를 다음과 같이 512MiB로 높여봤습니다.
728x90
그런 뒤 다시 서비스에 등록하여 동작시켰더니 다음과 같이 에러 없이 정상적으로 실행되는 것을 확인할 수 있었습니다.
728x90
반응형
'Infra, Cloud > AWS' 카테고리의 다른 글
[AWS] ECS 사용하기 (2) - ECS 생성하여 배포하기 (with. EC2) (0) | 2022.11.09 |
---|---|
[AWS] ECS 사용하기 (1) - GitLab으로 ECR에 이미지 push하기 (1) | 2022.11.05 |
[AWS] Bastion 호스트로 SSH 접속하기 (0) | 2022.10.31 |
[AWS] Private Subnet과 NAT Gateway 사용하기 (2) | 2022.10.31 |
[AWS] CloudWatch의 경보를 Slack으로 전달받기 (0) | 2022.10.22 |
댓글