EKS Fargate 를 기본사양으로 약 1달 정도 사용해 봤다. Fargate 의 기본사양(최소사양)은 vCPU 0.25 / memory 0.5GB 이다. 1개의 CPU 코어가 2 vCPU 니까 0.25면... Spring Jar 파일 돌리는데 부팅시 스프링 로그가 2초에 1줄 정도씩 나왔나. 당연히 부팅시간도 상당히 늘어난다. ALB 의 health check 도 길어지고... 부팅된 후에는 Lazy 설정 때문에 Slave DataSource 가 처음 세팅될 때도 10초 이상의 응답으로 Timeout 이 발생하기도 했다. 그것 빼고는 단일 어플리케이션 돌아가는데 큰 문제는 없어보였다. 이것저것 다 빼다보면 어디다 써야할지... t2.nano 보다도 낮은 사양... 우선 xms / xmx 을 확인해 봤다.
public static void main(String[] args) {
int mb = 1024 * 1024;
MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
long xmx = memoryBean.getHeapMemoryUsage().getMax() / mb;
long xms = memoryBean.getHeapMemoryUsage().getInit() / mb;
logger.info("xms: {}", xms);
logger.info("xmx: {}", xmx);
}
// print
xms: 8
xmx: 123
오마이... 저런 단위는 처음보는 수치이다. 이 상태로 잘도 돌아갔다. 일단 컴퓨팅 사양부터 높였다.
vCPU 1개(1000m) 당 : 월 $1.2
memory 1GB 당 : 월 $1.3
pod 를 정의한 deployment yaml 파일에서 cpu 와 memory 를 수정하였다.
spec.containers[].resources.limits.cpu
spec.containers[].resources.limits.memory
spec.containers[].resources.requests.cpu
spec.containers[].resources.requests.memory
$ vi my-deployment.yaml
...
spec:
containers:
- name: web
image: 1234567890.dkr.ecr.ap-northeast-2.amazonaws.com/web:latest
resources:
limits:
cpu: 1
memory: 2048Mi
requests:
cpu: 1
memory: 2048Mi
$ kubectl describe pods podname -n mynamespace
...
Annotations: CapacityProvisioned: 0.25vCPU 0.5GB
재배포하였으나 cpu / memory 는 변경되지 않았다. 어딘가에 제한이 걸려있는 느낌.
LimitRange 를 사용하여 namespace 레벨에서 cpu 와 memory 를 설정해 보았다.
$ my-usage-range.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: low-usage-range
spec:
limits:
- max:
cpu: 2
memory: 4G
min:
cpu: 1
memory: 1G
type: Container
$ kubectl apply -f my-usage-range.yaml -n my-namespace
다시 재배포해보니 잘 바뀌었다.
$ kubectl describe pods podname -n mynamespace
...
Annotations: CapacityProvisioned: 1vCPU 3GB
...
Limits:
cpu: 1
memory: 2048Mi
Requests:
cpu: 1
memory: 2048Mi
뭔가 바뀌었지만 memory 2048Mi 를 설정했는데 3GB 로 세팅됐다. Fargate 는 각 pod 의 메모리 예약에 256MB 를 추가하기 때문에 기본 단위상 1G가 더 늘어났다. 256MB 를 제외하고 1792Mi 로 설정하면 2G로 뙇!
Dockerfile 에 Xms / Xmx 설정도 뙇!
ENTRYPOINT ["java","-Xms1024m","-Xmx1792m","-jar","/app.jar"]
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.