kosmo138 / resumate

자기소개서를 세상에서 가장 쉽게 쓰는 방법
https://www.resumate.store
0 stars 0 forks source link

Docker 컨테이너 성능 최적화 #84

Closed suyons closed 3 months ago

suyons commented 3 months ago

문제 1: 2GB 이상의 RAM 사용량

개발 당시 Docker 컨테이너의 RAM 사용량이 2GB를 초과하여 프리 티어 EC2 인스턴스(RAM 1GB)에서 구동하기에 무리가 될 것이라 판단했다.

Alpine Linux 기반 경량화된 이미지로 변경 docker-compose.yml에 반영

기존 이미지 크기 대체 이미지 크기
nginx:latest 65MB nginx:alpine 15MB
amazoncorretto:21 217MB amazoncorretto:21-alpine-jdk 155MB
python:latest 1.9GB python:3.12-alpine 19MB
node:latest 382MB node:alpine 47MB

문제 2: 컨테이너의 자원 사용량 진단

이미지를 Alpine 기반으로 변경한 이후에도 자원 사용량은 크게 개선되지 않았다. 각 컨테이너가 사용하는 자원을 알아보기 위해 다음 명령을 입력했다.

docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
85b4f7af3954 nginx 0.00% 7.305MiB / 7.658GiB 0.09% 13.3MB / 13.3MB 0B / 4.1kB 9
1d18121c5e4f data 33.75% 87.9MiB / 7.658GiB 1.12% 884kB / 21.5kB 0B / 127kB 5
6eac7eaab57b server 0.21% 405.7MiB / 7.658GiB 5.17% 1.73kB / 0B 0B / 2.09MB 70
5c72c8623371 client 0.01% 2.135GiB / 7.658GiB 27.88% 89.9MB / 8.32MB 0B / 89.2MB 56

그래도 개선되지 않았다. CPU와 RAM 사용량이 큰 원인을 찾아 보았다.

둘 모두 코드의 변경 내용을 감지하면 자동으로 리로드하는 개발 모드에서 실행했기 때문이라 판단하였다.

개발 모드로 실행하지 않고 배포 환경 기준으로 빌드 후 실행하면 자원 수요가 덜할 것이라 판단하여 추가 조사는 종료했다.

suyons commented 3 months ago

Close #84