2012-06-01 1 views
2

다음 시나리오에서 GC를 어떻게 조정해야합니까 (예 : 수집기 유형, 힙의 최소/최대 크기, 새/이전 세대의 크기, 생존자와의 에덴 비율 등)? (Sun JDK 6을 사용하고 있으며 사용 가능한 메모리는 1GB입니다.)Java : master-slave 설정 용 마스터에서 GC 튜닝을 설정 하시겠습니까?

1) 차례로 마스터

2) 노드 상태 메시지는 CPU, 메모리, IO 사용 등을 포함에 따라 다양한 노드 시스템의 상태를 표시하는 웹 응용 프로그램을 실행 바람둥이를 실행하는 마스터 시스템; 전형적인 메시지 크기는 노드가 마스터 초당 3와 같은 메시지를 전송 1킬로바이트

3)이며, 마스터는 마스터에 마지막 시간 상태 데이터를 유지하는 것이

4) -10 노드가 따라서 메모리가 유지해야하는 총 상태 데이터는 다음과 같습니다. 3kb * 3600 * 10 = 108MB

5) 마스터는 당연히 다른 작업을위한 메모리를 필요로하므로 JVM의 메모리는 최대 절반 그러나 더 많은 것은 아닙니다.

내 구체적인 질문은 내가 더 큰 새로운 세대를 계속 유지하면 이러한 개체가 적어도 한 시간 동안 생기기 때문에 많은 복사가 발생한다는 것입니다. 오래된 겐을 더 크게 유지하면 소액 컬렉션이 많이 생깁니다. 어떻게해야합니까?

+1

에서 2)의 경우 메시지 크기가 1k 일 수 있지만 데이터 저장에 1k의 메모리가 필요하지는 않습니다. 예 : 직렬화 된 형식은 종종 잘 포장 된 메모리 표현보다 훨씬 큽니다. 이 가정을 확인하고 싶을 수도 있습니다! – mikera

답변

4

자신을 측정하십시오!

JVisualVM을 Tomcat 프로세스에 첨부하고 다양한로드에서 어떻게 작동하는지 확인하십시오. Visual GC 플러그인은 매우 유용 할 것입니다.

영감을 얻으려면 http://techblog.zabuchy.net/2012/monitoring-of-tomcat-with-visualvm-and-visualgc/을 참조하십시오.

+0

하지만이 정보를 기반으로 몇 가지 초기 매개 변수를 제안 할 수 있습니까? – shrini1000

+1

기본값으로 시작하여 작동하는지 확인하십시오. –

1

실제 성능 문제가 확인 될 때까지 GC 튜닝을 고려하지 않아도됩니다. 기본값이 정상적으로 작동합니다.

기본적으로 이는 GC 라이트 애플리케이션입니다. 초당 100k 정도의 메모리 할당과 100mb 정도의 작업 세트에 대해서 이야기하고 있습니다. 현대 서버로 처리하는 것은 그리 쉬운 일이 아닙니다.