개발자

nginx를 통해 로드밸런싱하려합니다. 성능과 관련해서 질문있습니다.

2023년 11월 02일조회 212

springboot 프로젝트를 gcp인스턴스에 docker컨테이너로 배포하려합니다. 웹서버 인스턴스를 따로 둬서 nginx를 설치하고 실행합니다. 문제는 프리티어 gcp라 그런지 springboot 컨테이너를 한 인스턴스에 두 개를 띄우고, 추가로 mariadb와 redis로 컨테이너로 띄워 총 4개의 컨테이너가 실행되는데, 이렇게 하니 인스턴스 접속이 점점 느려지다 어느 순간 멈춰버립니다. 결국 인스턴스를 중단했다가 다시 켜야 다시 원 상태로 돌아옵니다. 물론 해결방법은 구글 클라우드에서 지원하는 cloud storage같이 방법이 있고, 다른 인스턴스를 만들어 로드밸런싱 되는지 확인할 수 있지만,.. 궁금한 게 생겨 확인해봐야할 것 같습니다. 정말 gcp의 프리티어로는 이렇게 여러 컨테이너들을 띄우는 게 어려운 지 궁금합니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

박범수님의 프로필 사진

도커 컨테이너의 리소스 사용량을 제한하면 인스턴스가 죽는 것을 방지할 수 있습니다. 다음과 같은 포스팅을 참고하세요. https://recordsoflife.tistory.com/520 물론 죽지만 않을 뿐이지 레이턴시나 성능 면에서 만족스럽지 않을 가능성이 높습니다.

손우진님의 프로필 사진

프리티어는 어렵죠. L7 로드밸런싱이 되는구나 확인하는 정도로는 유용할거에요. 로드밸런싱이 단순히 해보고 싶은거라면 로컬에서 해보는것도 방법입니다. 이왕 하는김에 미니쿠베도 공부 해 보시죠.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2023년 11월 02일

GCP 프리티어는 일정 사용량까지 무료로 제공하는 서비스이기 때문에, 자원에 대한 제한이 있습니다. 여러 도커 컨테이너를 실행하는 것은 각 컨테이너가 필요로 하는 CPU와 메모리 자원을 고려해야 합니다. Google Kubernetes Engine (GKE) 같은 관리형 서비스를 이용하면 쿠버네티스 클러스터의 확장성과 유연성을 활용할 수 있지만, 이 역시 프리티어에는 포함되어 있지 않습니다. Springboot, MariaDB, Redis의 세 가지 서비스 모두 도커 컨테이너 내에서 실행하고 있으며, 이들 각각은 전부 비교적 높은 리소스 요구량을 가집니다. 특히 데이터베이스와 같은 스토리지 인텐시브 작업을 수행하는 서비스일수록 많은 메모리와 디스크 I/O를 필요로 합니다. 따라서 당신의 현상은 아마도 GCP 인스턴스의 리소스가 모두 소진되어 발생한 것으로 예상됩니다. 이 문제를 해결하기 위해 몇 가지 방법을 제안드립니다: 1) 기본적인 해결방식은 더 많은 리소스를 가진 인스턴스 유형을 사용하는 것입니다. 단, 이 경우 비용이 발생할 수 있습니다. 2) 서비스들의 리소스 사용량을 최적화합니다. 예를 들어, Spring Boot 애플리케이션의 JVM 사이즈 등을 조절하여 메모리 사용량을 줄일 수 있습니다. 3) 필요한 모든 서비스를 동일한 인스턴스에서 실행하는 대신, 각각 다른 인스턴스에 분산시킬 수 있습니다. 이 방식도 추가 비용이 발생할 것입니다. 4) 마지막으로 GCP에서 제공하는 관리형 SQL과 Redis 서비스를 활용하면 리소스 부족 문제를 해결할 수도 있습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!