달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2011. 9. 23. 10:15

GC (Garbage Collection) 과 로그수집 Enjoy/JAVA2011. 9. 23. 10:15

출처 :  http://itnpeople.blog.me/40133095260

GC (Garbage Collection) 과 로그수집



GC (Garbage Collection)

GC 는 minor GC, full GC 로 나뉘어 진다.

Full GC 시는 모든 프로세스를 holding 된다 Full GC 동안은 response 하지 않으므로 Full GC 시간을 줄이는 것이 성능 향상에 매우 중요함

 

GC 알기 위해서는 첨부된 문서를 반드시 먼저 숙지

첨부해도 되는 문서인지는 모르겠으나 구글링 가장 정리되어 있는 문서이기에 첨부합니다.

작성하신 조병욱님 정말 감사합니다.

 

반드시 알아야

  1. JVM 메모리는 크게 New/Young - Old 영역으로 GC Minor GC Full GC 나누어 지며
  1. Minor GC New/Young 영역의 메모리를 확보하는 작업
  1. Full GC Old 영역의 메모리를 확보하는 작업. Full GC 처리 시간을 줄이는 것이 메모리 튜닝의 핵심
  1. GC 알로리즘은 4개이며 각각의 환경 ( H/W 지원 ) 맞게 JVM 옵션을 통해서 알고리즘을 선택 가능
  1. 전체 메모리에서 New/Young 영역의 비율을 늘리면 minor GC , Full GC 횟수를 줄일 있지만 Full GC 소요시간은 동일

 

GC 로그 수집

GC 튜닝하기 위해서는 가장 중요한 것은 역시 로그 수집

Jvm 옵션을 통하여 GC 로그를 수집

옵션에서 특별히 파일을 지정하지 않을 경우는 콘솔에 로깅됨 ( 톰켓 : $CATALINA_HOME/logs/catalina.out)

 

-verbosegc : GC 로깅 처리하겠다.

-verbosegc : GC 로깅 처리

-XX:+PrintGCDetails : Detail 하게 로깅

-XX:+PrintGCTimeStamps : 시간도 로깅에 포함

-XX:+PrintHeapAtGC : GC 발생 전후의 Heap에 대한 정보를 상세하게 기록

 

JVM 옵션 지정 (톰켓)

 

# vi /usr/local/tomcat/bin/catalina.sh

JAVA_OPTS="$JAVA_OPTS -verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC"

 

APP 경우는 반드시 JVM 옵션에 "-server" 추가 (default : -client) 한다.

 

-server 옵션을 추가 했을 경우 New/Young : Old = 1:2  크기로 자동 셋팅

Default 1:8  이므로 -server 옵션을 추가 주는 것만으로 New/Young 영역이 늘어나 GC 횟수를 줄일 있다.

 

JAVA_OPTS="$JAVA_OPTS -server"

 

JVM에서 Full GC 최소 1시간 마다 1회씩 주기적으로 수행 (JDK_1.6 이상)

 

참고 URL

GC 관련 게시물 : http://www.javaservice.net/~java/bbs/read.cgi?m=etc&b=jdk&c=r_p&n=1152321260

JVM Option : http://wiki.ex-em.com/index.php/JVM_Options


:
Posted by 라면스프