inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자도 이해할 수 있는 Docker 입문/실전

[실습] AWS EC2에 Spring Boot, MySQL, Redis 배포하기

마지막 docker compose up -d후 버퍼링이 심합니다.

259

박지훈

작성한 질문수 2

0

저는 조이프로젝트를 진행 중이고, 초반에는 Redis, MySQL, Jasypt, 그리고 회원 CRUD 정도만 구현한 상태입니다. 현재 도커를 이용해 배포 중인데, 배포 과정에서 문제가 발생하고 있습니다.

  1. 문제 발생:

    • EC2에서 MySQL, Redis, Spring을 배포할 때, docker compose up을 실행하면 테스트와 체크는 정상적으로 이루어집니다.

    • 그러나 서버가 실제로 구동되지 않음.

    • EC2 자체의 성능 문제가 발생하여, 로그 확인을 위해 docker logs를 실행하려 할 때 이 너무 심해집니다.

  2. 상황:

    • 배포 과정에서 동시 올리기 작업을 마지막에 시도하고 있는데, 이때 EC2 성능 저하가 심해지고, CPU 사용량50% ~ 100% 사이로 왔다 갔다 하면서 이 발생합니다.

  3. 의문점:

    • 프리티어 인스턴스1GB RAM, CPU 성능 문제 때문인지 의심됩니다.

    • CPU 사용량이 높은 상태에서, 이러한 렉 현상을 해결하려면 어떻게 해야 할지 궁금합니다.

docker docker-compose docker-volume docker-image container ecr

답변 3

1

박지훈

Swap 메모리를 할당해서 늘려주니 문제 없이 잘 돌아갔습니다! 감사합니다.

0

JSCODE 박재성

안녕하세요 지훈님! 해결하신 것 같아 다행이네요:)

지훈님이 해결하신 것처럼 프리티어의 사양을 유지하면서 해당 문제를 해결할 때

Swap 메모리 할당의 방법을 많이 활용합니다!

이 외로 궁금하신 점 생기시면 언제든 질문 남겨주세요~~

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 박지훈님 질문 주셔서 감사합니다.

Docker Compose를 사용하여 여러 컨테이너를 돌리고 있을 때, 특히나 Amazon EC2의 프리티어 계정을 사용할 경우, 자원이 부족하여 성능이 저하될 수 있습니다. 아래에서 문제 해결을 위한 몇 가지 접근 방법을 제안드립니다:

  1. EC2 인스턴스 업그레이드:

    • 프리티어 인스턴스는 성능이 매우 제한적입니다. 더 많은 자원이 필요한 경우, 인스턴스를 업그레이드하는 것이 필요할 수 있습니다. 특히, CPU와 메모리가 충분한 인스턴스로 업그레이드하면 성능 문제를 해결할 수 있습니다.
  2. 서비스 최적화:

    • 현재 구동 중인 각 서비스(Spring, MySQL, Redis)가 필요로 하는 최소 리소스를 고려하여 최적화 설정을 적용해보세요. 예를 들어, Spring Boot의 최대 메모리 사용량을 제한하고, MySQL의 캐싱 및 메모리 설정을 조정할 수 있습니다.
  3. 로그 관리:

    • docker logs에서 많은 로그가 출력되도록 설정되어 있을 경우, 로그 크기가 시스템 성능에 영향을 줄 수 있습니다. 로그 레벨을 일시적으로 줄이거나, 파일로 로그를 저장하도록 설정하면 실시간으로 로그를 확인하는 부담을 줄일 수 있습니다.
  4. Swap 메모리 사용:

    • EC2에서 스왑 메모리를 활성화하여 부족한 물리 메모리를 보완할 수 있습니다. 하지만 스왑은 디스크를 사용하기 때문에 I/O 성능이 저하될 수 있으므로 조심스럽게 설정해야 합니다.
  5. Docker Compose 설정 조정:

    • docker-compose.yml 파일에서 depends_onhealthcheck를 적절히 설정하여 각 서비스가 충분히 준비된 후 다음 컨테이너를 실행하도록 설정할 수 있습니다. 이는 성능을 약간 향상시킬 수 있습니다.

위의 방법 외에도, 유사한 문제를 경험한 다른 사용자들의 해결 방법을 참고하면 더욱 도움이 될 수 있습니다. 다음은 관련된 유사 질문 링크입니다:
- docker compose up 시 느려짐 + 프로젝트 실행 안되는 문제
- JDBCConnectionException 가 납니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

EC2 터미널에서 docker pull

0

64

2

AWS ECR

0

58

2

FROM openjdk:17-jdk 현재 기준 dockerhub에 없습니다

1

100

2

Redis 볼륨 설정?

0

117

2

컨테이너의 IP

0

80

2

도커 이미지를 만들 때 application.yml

0

105

2

compose.yml 관리

0

88

2

ECR 리포지토리에 이미지가 3개가 보입니다.

0

77

2

액세스 키 등록하는 시점 관련 질문이 있습니다.

0

83

1

depends_on에 따른 컨테이너 실행 순서

0

76

2

실제 웹 서비스 배포 시 질문

0

80

2

도커 volume 질문

0

67

3

HTTPS로도 받고 싶으면 docker compose에 443도 쓰면 될까요?

0

73

2

sql 볼륨 폴더 지우면 데이터베이스 데이터 날라가는거 아닌가요?

0

73

2

39강 도커파일 빌드 경로 질문이 있습니다.

0

70

2

도커파일 copy

0

70

2

실무에서 docker compose up --build를 할 때

0

188

2

mysql_data 폴더 내부에 다른 파일이 있는데도 잘 되는 경우

0

86

2

도커 허브에서 postgres 버전 확인하는 법

0

127

2

보충 자료와도 관련된 추가 내용

1

82

1

현업에서 MySQL은 RDS와 도커 볼륨 중 어떤 걸 사용하나요?

0

110

2

노션 자료에 안 보이는 이미지가 있습니다

0

101

1

도커 허브에서의 latest가 가장 최신인 게 맞나요?

0

121

2

docker image ls 실행 시 나오는 내용이 다릅니다

0

87

2