ECS 태스크 정의와 컨테이너 레벨 메모리 설정
컨테이너 메모리 설정으로 자원 관리 최적화, 하드/소프트 제한 활용 가능.
1. 컨테이너 레벨 메모리 설정
- 하드 제한 (memory)
- 컨테이너가 사용할 수 있는 최대 메모리 양
- 이 값을 초과하면 컨테이너가 종료됨
docker run --memory
옵션에 매핑됨
- 소프트 제한 (memoryReservation)
- 컨테이너를 위해 예약하는 메모리 양
- 시스템 메모리가 부족할 때 이 값을 유지하려고 시도함
- 필요한 경우 이 값을 초과하여 하드 제한까지 사용 가능
docker run --memory-reservation
옵션에 매핑됨
2. 태스크 레벨 메모리 설정
{
"family": "task-definition",
"memory": "2048", // 태스크 레벨
"containerDefinitions": [{
"memory": 1024, // 컨테이너 레벨 하드 제한
"memoryReservation": 512 // 컨테이너 레벨 소프트 제한
}]
}
- 태스크 내 모든 컨테이너가 사용할 수 있는 총 메모리 제한
- Fargate의 경우 필수이며, 특정 값만 사용 가능 (예: 512MB, 1GB, 2GB 등)
- EC2의 경우 선택사항
주요 차이점:
- Fargate의 경우:
- 태스크 레벨 메모리 설정이 필수
- CPU 값과 연계된 특정 메모리 값만 사용 가능
- 컨테이너 레벨 메모리 설정은 선택사항
- EC2의 경우:
- 태스크 레벨 또는 컨테이너 레벨 중 하나는 반드시 지정해야 함
- 더 유연한 메모리 값 설정 가능