2016-09-07 2 views
2

자바 애플리케이션 서버는 고유 한 JVM을 확장하여 여러 (마이크로) 서비스를 실행하지만, 도킹 된 자바 마이크로 서비스 아키텍처는 각 도킹 된 마이크로 서비스에 대해 JVM을 실행합니다. 20 개 이상의 java 마이크로 서비스와 제한된 수의 호스트를 고려할 때 각 호스트의 JVM에서 사용하는 리소스의 양은 엄청납니다.효율적으로 자바 마이크로 서비스를 도킹하는 방법

이 문제를 효율적으로 관리하는 방법이 있습니까? 자원 소비를 제한하기 위해 각 JVM을 조정할 수 있습니까? 목표는 자바 마이크로 서비스 아키텍처에서 도커 사용의 오버 헤드를 제한하는 것입니다.

+1

아무 것도 묻지 않았습니다. 너의 문제는 무엇인가? –

답변

2

각 Docker 및 JVM 사본 실행은 메모리를 사용합니다. 일반적으로 단일 노드에 여러 개의 JVM이있을 경우 공유 메모리를 사용하지만이 옵션은 도커와 함께 사용할 수 없습니다.

각 JVM의 최대 힙 크기를 줄이면됩니다. 그러나 각 JVM의 힙 크기와 오버 헤드로 도커 이미지 당 적어도 1GB를 허용합니다. 그것은 많은 메모리처럼 들리지만 요즘에는별로 들지 않습니다.

각 JVM에 2GB 힙을 지정하고 docker + JVM에 1GB를 추가한다고 가정하면 20 대의 JVM/도커를 실행하려면 64GB 서버가 필요합니다.

+0

답해 주셔서 감사합니다. JVM 스택에 대한 '캐주얼'값은 어디에서 찾을 수 있습니까? 실제로, 500MB는 대개 내 μS (대금 지급)에도 충분합니다. (jvisualv로 확인). 그래서 나는 당신이 추천하는 가치에 깊은 인상을받습니다. – DouglasAdams

+0

@DouglasAdams 일부 고객은 100 TB의 가상 메모리 크기를 가진 JVM을 사용합니다. JVM 당 0.5GB의 힙을 가지고 있다면 오버 헤드가 꽤 많이 필요하다는 것을 알게 될 것입니다. –

+0

@DouglasAdams JVM 스택의 값은 무엇을 의미합니까? 기본값이 무엇을 의미합니까? 스레드 수가 적 으면 조정할 필요가 없습니다. –

관련 문제