추천 튜닝 옵션
1. Heap 의 Max 와 Min Size 는 같게
2. PermSize 를 지정할것
3. -server 옵션 지정
4. NewSize, MaxNewSize는 같게, 전체 Heap 의 1/3 크기
5. 1.4.2_1x 부터는 Parallel GC 사용 권장
6. Full GC Time 이 많이 소요될 경우 CMS( Concurrnet GC )사용
7. 32Bit JVM의 경우 HeapSize는 Max 1200M~1500M 까지
8. Full GC는 통상적으로 1시간에 1회, 1회 5~12 초가 적절
java -server
-Xms1024m -Xmx1024m
-XX:MaxPermSize=256m
-XX:NewSize=384m -XX:MaxNewSize=384m
-XX:+UseParallelGC -XX:ParallelGCThreads=4
-verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
참조 :
-Xms256m -Xmx256m -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintGCApplicationStoppedTime -XX:NewSize=64M -XX:MaxNewSize=64M -XX:SurvivorRatio=8 -Xloggc:/logs/weblogic/gc.log
-Xverbosegclog:gc.log (IBM JDK)
[WebLogic 8.x - startManagedWebLogic.sh 예]
JAVA_VM="-server"
JAVA_OPTIONS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution ${JAVA_OPTIONS}"
MEM_ARGS="-D:${SERVER_NAME} -Xms1024m -Xmx1024m -XX:MaxPermSize=256m"
# Start WebLogic server
echo CLASSPATH="${CLASSPATH}"
echo
echo PATH="${PATH}"
echo
echo "***************************************************"
echo "* To start WebLogic Server, use a username and *"
echo "* password assigned to an admin-level user. For *"
echo "* server administration, use the WebLogic Server *"
echo "* console at http://<hostname>:<port>/console *"
echo "***************************************************"
"$JAVA_HOME/bin/java" ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS}
-Dweblogic.Name=${SERVER_NAME}
-Dweblogic.management.username=${WLS_USER}
-Dweblogic.management.password=${WLS_PW}
-Dweblogic.management.server=${ADMIN_URL}
-Djava.security.policy="${WL_HOME}/server/lib/weblogic.policy"
weblogic.Server
[WebLogic 9.x/10.x - startWebLogic.sh 설정 예]
JAVA_OPTIONS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps " ${JAVA_OPTIONS}
if [ "${SERVER_NAME}" != "AdminServer" ] ; then
MEM_ARGS="-D:${SERVER_NAME} -Xms1024m -Xmx1024m -XX:MaxPermSize=256m"
fi
[ JRockit 용 예]
MEM_ARGS=-server -Xms1024m -Xmx1536m -Xverboselog:gc.log -Xverbose:memory -Xgcprio:throughput
[ IBM JDK 1.4 용 예 ]
MEM_ARGS=-verbose:gc -Dibm.dg.trc.print=st_verify -Xverbosegclog:gc.log
[ IBM JDK 1.5 용 예 ]
USER_MEM_ARGS=-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xverbosegclog:gc.log
http://kr.bea.com/files/support/best_tip/17_2007/server_c.pdf
http://lamp.epfl.ch/java/java-ibm-1.5/docs/ko/sdkandruntimeguide.lnx.ko.htm
[벤더별 예]
1) HP
USER_MEM_ARGS="-XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -verbose:gc -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -Xverbosegc:file=./GC/${SERVER_NAME}_GC_`date '+%y%m%d_%H%M%S'`.txt" -Dweblogic.jsp.windows.caseSensitive=true"
export USER_MEM_ARGS
MEM_ARGS="-ms1024m -mx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:CodeCacheMinimumFreeSpace=2M -XX:ReservedCodeCacheSize=64M"
export MEM_ARGS