코딩 이래요래
AWS ECS 중지됨: TaskFailedToStart: RESOURCE:MEMORY 본문
Spring Application을 AWS를 이용하여 배포를 진행하면서 겪은 상황을 얘기해보려 한다...
아래는 간단한 배포 다이어그램이다.
- Spring boot application amd/64 기반으로 빌드하여 ECR에 Docker image push
- access key, secret key 등 민감한 정보를 담은 .env 파일 private S3 업로드
- ECS를 이용하여 ECR의 이미지와 S3의 .env파일을 이용하여 태스크 실행
하지만 Task는 실패
Task failed to start. Reason: RESOURCE:MEMORY
부팅도 못하고 죽었다..
메모리가 부족하다는 말인데.. 태스크 정의를 살펴보자
"containerDefinitions": [
{
"name": "",
"image": "",
"cpu": 256,
"memory": 312,
"memoryReservation": 256,
"portMappings": [
{
"name": "discodeit-app-80-tcp",
"containerPort": 80,
"hostPort": 80,
"protocol": "tcp",
"appProtocol": "http"
}
}
]
AWS 과금 방지를 위해 최소한의 리소스를 사용하려고 메모리를 312Mib로 설정했는데 이게 문제였다.
- 검색 결과 대부분의 Spring 앱에서 JVM이 제대로 뜨기도 힘든 수준...
- 특히 .jar로 실행할 경우, 클래스 로딩 + 컨테이너 기동 + JVM Overhead까지 감안하면 최소 512Mib 이상은 필요하다고 한다.
이후 컨테이너 메모리를 512Mib로 상향 조정 후 ECS Task를 다시 실행하니...
정상적으로 기동되었다..
'Trouble Shooting' 카테고리의 다른 글
AWS ECS Prometheus + Grafana로 모니터링 하기 (1) | 2025.07.08 |
---|---|
AWS CloudWatch 과금 (4) | 2025.07.07 |
TimeZone😤 (2) | 2025.06.23 |