HP JVM 튜닝옵션 2013. 11. 01
목차 1. 개요... 3 2. JVM 특징소개... 3 3. JVM 주요옵션소개... 3 4. 분석기술... 16 2
1. 개요 HP JVM 의특징을살펴보고, TroubleShooting 방법과, 실제 Site 튜닝사례를살펴보도록한다. 2. JVM 특징소개 JVM 메모리영역. 3. JVM 주요옵션소개 GC command-line options -Xmn<size> new generaton heap 사이즈결정. (-XX:NewSize=N 설정을대신하는옵션.) 사용예 : -Xmn64m -Xms<size> memory allocation pool 의초기사이즈결정, 단위 byte. 1024 의배수로서 1MB 보다커야한다. 사용예 : -Xms6291456 3
-Xms6144k -Xms6m 기본값 : -Xms2m -Xmx<size> memory allocation pool 의최대사이즈, 단윈 byte. 1024의배수로서 2MB 보다커야한다. 사용예 : -Xmx83886080 -Xmx81920k -Xmx80m 기본값 : -Xmx64m -XX:SurvivorRatio=<size> eden/survivor space 사이즈의비율. 기본값은 8로써 enden 이 from 과 to의 8배를의미한다. Xmn / (SurvivorRatio + 2) = size of from and to, each ( Xmn / (SurvivorRatio + 2) ) * SurvivorRatio = eden size -XX:NewSize=<size> new generation 의기본 size( 단위 byte). (For 1.2, specify KB only). Not supported in 1.3. -XX:MaxNewSize=<size> new generation 의최대 size 설정 ( 단위 byte). 1.2 에서는 KB 로만설정가능, 1.3 에서는지원치않음. -XX:MaxPermSize=<size> permanent generation 의최대 size 설정 ( 단위 byte). SDK 1.2.2 에서는 kbyte 단위의 integer 값만유효함. 기본값 : 64MB -XX:PermSize=<size> permanent space 의초기 size 설정 ( 단위 byte). 1MB 보다큰 1024 의배수로설정해야한다. 사용예 : -XX:PermSize=6291456 -XX:PermSize=6144k -XX:PermSize=6m 기본값 : -XX:PermSize=16m (1.4 and later) 4
-verbosegc garbage collection 결과를 stdout steam 에출력. 출력형태 : [%T %B->%A(%C), %D] 항목 출력내용 %T GC: scavenge 일경우 Full GC: full garbage collection 일경우 %B garbage collection 수행전 Java heap 사용량, 단위 KB %A garbage collection 수행후 size, 단위 KB %C 현재 Java heap 의전체용량, 단위 KB %D collection 수행시간, 단위 seconds. -Xverbosegc<options> garbage collection 전, 후 Java Heap 내공간의세부적인정보를출력하는데사용된다. 1.3.1.14 와 1.4.2.05 이후에서는정의된파일명에 process id 가자동으로추가되어진다. 옵션사용문법 : -Xverbosegc[:help] [0 1][:file=[stdout stderr <filename>]] 5
6
7
8
9
10
11
12
13
HP-UX 상에서의 garbage collection 분석툴로는 HPjtune 이있다. 참고사이트 : http:/www.hp.com/go/java -XX:+DisableExplicitGC System.gc() 에의한명시적인 garbage collection 을무효화시킨다. -Xnoclassgc class 의 garbage collection 금지옵션. -Xoptgc optimistic garbage collection 플래그. short-lived objects 를사용하는응용프로그램에서 garbage collection 성능을증대시킨다. 사용상주의가요구되며, short-lived object를많이생성하지않는경우에는권장하지않는다. 기타옵션 -Xshare:on, -Xshare:off, -Xshared:auto UserSharedSpaces 는 HP-UX 상에서는지원되지않는다. -Xss<size> 14
(excerpt below from http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/java.html#options) Java thread 는 Java code 와 C code 를위한두개의 stack 을갖는다. native stack size 의최대값결정 ( 하나의 thread 내의 C code가사용하게되는 stack size), 단위 bytes. sizes 는반드시 1000 byte 보다커야한다. 기본값 : -Xss512k (Java 1.3, 1.4, and 5.0 32-bit mode) -Xss1m (Java 1.4 and 5.0 64-bit mode) HeapDump 관련 option -XX:+HeapDump SDK 1.4.2.10, JDK 1.5.0.03 이상부터사용가능. 해당프로세스에 SIGQUIT 시그널을보낼때마다 JVM 이 Java Heap 의 dump 를생성하게된다. 설정방법은 JEUSMain.xml <command-option> 에 XX:+HeapDump 또는환경변수에 _JAVA_HEAPDUMP=1 로설정할수있다. 생성되는파일의포맷은 hprof 포맷이며, 생성되는파일명의포맷을아래와같다. java_<pid>_<date>_<time>_heapdump.hprof.txt -XX:+HeapDumpOnly 와 _JAVA_HEAPDUMP_ONLY SDK 1.4.2.11 이상부터사용가능. 설정방법은 JEUSMain.xml <command-option> 에 XX:+HeapDumpOnly 또는환경변수에 _JAVA_HEAPDUMP_ONLY 로설정할수있다. SIGVTALARM signal(signal 20) 을이용하여 HP Heap Dump 할수있다. 생성되는파일명의포맷을아래와같다. java_<pid>_<date>_<time>_heapdump.hprof.txt 생성되는출력의기본포맷은 ASCII 이며, hprof binary 포맷으로변경키위해서는환경변수에 _JAVA_BINARY_HEAPDUMP 환경변수를지정하면된다. 기본적으로 XX:+HeapDump 와 XX:+HeapDumpOnly 의 dump 정보는 ASCII 포맷이다. -XX:+HeapDumpOnCtrlBreak SDK 1.4.2.11, JDK 5.0.05 이상부터사용가능. JEUSMain.xml <command-option> 에 XX:+HeapDumpOnCtrlBreak 로설정가능. -XX:+HeapDump 와비슷하나 binary 포맷이다. 생성되는파일명의포맷을아래와같다. java_<pid>_heapdump.hprof.<millitime> 15
-XX:+HeapDumpOnOutOfMemoryError SDK 1.4.2.11, JDK 5.0.04 이상부터사용가능하며, low-pause collector(-xx:+useconcmarksweepgc) 에서는작동하지않는다. Out Of Memory error 발생시 Heap dump 발생하며, hprof binary 포맷으로서 working directory 상에 java_pid<pid>.hprof 의파일명으로작성된다. -XX:HeapDumpPath=<file> 와같이사용하여디렉토리또는파일명을결정할수있다. 환경변수와 HeapDump option 의조합 4. 분석기술 -Xverbosegc 로그출력과이해 (Java 5.0) -Xverbosegc 옵션을통해 Java Heap 의 garbage collection 전, 후의자세한내용을출력할수있다. -Xverbosege:help 을통해출력내용의포맷을확인할수있다. 출력되는결과는아래와같은형태를취하고있다 (Java 5.0, 20 개 field). 16
상기의로그포맷은 HPjtune 을이용하여 graphical 하게분석할수있다. HPjtune 을이용한 Xverbosegc 분석 1. 다운로드 : http://www.hp.com/products1/unix/java/java2/hpjtune/index.html 2. 실행화면 17
3. 설명 실제 Xverbosegc 의로그를분석한화면으로써, 전체기간동안의 Java Heap 의현황과사용된 JVM option 및 Java Heap 의 Garbage Collection 수행내역의정보에쉽게접근이가능하다. Out Of Memory Error 을발생시킬수있는몇가지사유 Virtual address space 의 size 제약적절치못한 Java Heap 사이즈설정낮은값의 kernel parameter 설정 max_thread_proc : 프로세스당 thread 개수 nkthread : 총 thread 개수 maxdsiz : Data region size nfiles : open file 개수 maxfiles : 프로세스당 open file 의 soft limit maxfiles_lim : 프로세스당 open file 의 hard limit 18
Copyright 2013 TmaxSoft Co., Ltd. All Rights Reserved. TmaxSoft Co., Ltd. Trademarks Tmax, WebtoB, WebT, JEUS, ProFrame, SysMaster and OpenFrame are registered trademarks of TmaxSoft Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. Contact Information TmaxSoft can be contacted at the following addresses to arrange for a consulting team to visit your company and discuss your options for legacy modernization. Korea - TmaxSoft Co., Ltd. Corporate Headquarters 272-6 Seohyeon-dong, Bundang-gu, Seongnam-si, South Korea, 463-824 Tel : (+82) 31-8018-1708 Fax : (+82) 31-8018- 1710 Website : http://tmaxsoft.com U.S.A. - TmaxSoft Inc. 560 Sylvan Avenue Englewood Cliffs, NJ 07632, USA Tel : (+1) 201-567-8266 Fax : (+1) 201-567- 7339 Website : http://us.tmaxsoft.com Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073 Japan Tel : (+81) 3-5765-2550 Fax: (+81) 3-5765- 2567 Website : http://jp.tmaxsoft.com China TmaxSoft China Co., Ltd. Room 1101, Building B, Recreo International Center, East Road Wang Jing, Chaoyang District, Beijing, 100102, P.R.C Tel : (+86) 10-5783-9188 Fax: (+86) 10-5783- 9188(#800) Website : http://cn.tmaxsoft.com China(JV) Upright(Beijing) Software Technology Co., Ltd Room 1102, Building B, Recreo International Center, East Road Wang Jing, Chaoyang District, Beijing, 100102, P.R.C Tel : (+86) 10-5783-9188 Fax: (+86) 10-5783- 9188(#800) Website : www.uprightsoft.com TD-JSTN-C1101017 19