tomcat 메모리 CATALINA_OPTS 설정 Enjoy/JSP2012. 12. 11. 10:40
tomcat 에 힙사이즈 설정
catalina.sh 파일에 아래 내용 추가
export CATALINA_OPTS="-Djava.awt.headless=true -server -Xms2048m -Xmx2048m -Xmn1024m
-XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC
-XX:SurvivorRatio=4 -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError"
- CATALINA_OPTS="-server -Xss256k -Xms256m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -XX:SurvivorRatio=5 -XX:ReservedCodeCacheSize=128m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true "
-Xmx1024m -Xms1024m -XX:MaxNewSize=384m -XX:MaxPermSize=128m
힙덤프
-XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./java_pid<pid>.hprof
GC 옵션
-XX:ParallelGCThreads=2 -XX:-UseConcMarkSweepGC
GC 로그 옵션
-XX:-PrintGC -XX:-PrintGCDetails -XX:-PrintGCTimeStamps -XX:-TraceClassUnloading -XX:-TraceClassLoading
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_BASE/logs
http://helloworld.naver.com/helloworld/184615
표 3 모니터링 후 옵션변경 예시
종류 | 옵션 |
동작 모드 | -sever |
전체 힙 크기 | -Xms와 –Xmx의 값을 같게 |
New 영역 크기 | -XX:NewRatio 2~4 정도의 값 |
-XX:NewSize=? –XX:MaxNewSize=? NewRatio 대신 NewSize를 지정하는 것도 좋다. | |
Perm 크기 | -XX:PermSize=256m -XX:MaxPermSize=256m 성능에 영향을 미치지 않으므로 동작에 문제가 없을 정도만 지정한다. |
GC 로그 | -Xloggc:$CATALINA_BASE/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps GC로그를 남기는 것은 특별히 Java 애플리케이션 수행 성능에 영향을 미치지 않는다. 가급적이면 GC 로그를 남기는 것이 좋다. |
GC 알고리즘 | -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 일반적으로 권할만한 설정일 뿐이다. 애플리케이션 특성에 따라 다른 선택이 더 좋을 수 있다. |
OOM 에러 발생 시 힙 덤프 생성 | -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_BASE/logs |
OOM 발생 이후 조치 | -XX:OnOutOfMemoryError=$CATALINA_HOME/bin/stop.sh 또는 -XX:OnOutOfMemoryError=$CATALINA_HOME/bin/restart.sh 힙 덤프를 남긴 뒤, 관리 정책에 맞게 적합한 동작을 취할 수 있도록 한다. |