RadarURL

웹서버,WAS
2016.03.23 02:30

Tomcat JVM heap memory set 및 size

조회 수 703 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
[Tomcat JVM heap memory set]
 
]# /etc/profile
export CATALINA_OPTS="-server -Xms256M -Xmx384M"
 
// 정말로 이옵션이 꼭 필요하지 않는이상 적용하지 말아야 합니다.
이 옵션은 힙사이즈를 늘려주는대신 GC 시간을 잡아먹기때문에

사용자수가 유독 많은 웹사이트의 경우 절대 추천하지 않습니다.


========================================================================

톰캣에 무거운 웹 어플리케이션을 돌리면서 오토 리로드 기능을 사용하다 보면 

2~3번은 정상적으로 되지만 그 이후부턴 PermGen space 라는 에러문구와 함께 톰캣이 뻗어버리는 현상이 발생한다.

그것을 예방하기 위해서는 톰캣폴더 하위에 있는 bin 폴더 밑에 catalina.sh 최상단에 아래 문구를 추가해주면 된다. 
 

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

 
------------------------------------------------

JAVA_OPTS="-Djava.awt.headless=true -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
 
------------------------------------------------


  출처 - http://msgzoro.egloos.com/3264728

=
=======================================================================

Solr 1.4 Enterprise Search Server 에서는 solr 실행시 JVM의 memory 설정을 변경하기 위해서 다음과 같이 한다.
   "java -Xms512M -Xmx1024M -server -jar start.jar"

하지만 sevlet container로 Tomcat을 사용하는 경우
solr의 실행을 위와 같이 하지 않고, solr.war를 webapp에 넣은후 Tomcat을 start하면 자동으로 solr가 실행된다.
따라서 JVM의 설정의 위와같이 변경할 수 없다.
이런 경우에는 다음과 같이 변경하면 된다.

[방법1]
   1. $CATALINA_HOME/bin/catalina.bat 파일을 오픈한다.
   2. JAVA_OPTS를 찾는다.
   3. -Xms512m -Xmx1024m을 추가한다.

예를 들면, 다음과 같다.

set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" 
-Xms512M -Xmx1024M


[방법2]
Tomcat을 시작하기 전에 CATALINA_OPTS 환경변수를 수정하는 것이다.
Unix의 경우에는 startup.sh scrip에 다음을 추가하면 된다.
export CATALINA_OPTS=-Xms512m -Xmx1024m;

* startup.sh은 catalina.sh를 호출한다.

[Reference]
http://www.coderanch.com/t/421341/Tomcat/change-JVM-setting-Xms-Xmx
http://www.informix-zone.com/node/46

 
 
 
 

Tomcat heap 사이즈 조절 및 메모리 튜닝

 

* Sun Microsystyems의 자바 HotSpot VM은 힙을 세 개의 영역으로 나누고 있다. 

 힙의 세 영역은 다음과 같다: 
 1) Permanent space: JVM 클래스와 메소드 개체를 위해 쓰인다. 
 2) Old object space: 만들어진지 좀 된 개체들을 위해 쓰인다. 
 3) New(young) object space: 새로 생성된 개체들을 위해 쓰인다.

 

<Heap layout 할당에 영향을 주는 스위치들 >


 

 *명령행 스위치 설명 
 

-Xms=[n]  최소 heap size 
 

-Xmx=[n]  최대 heap size 
 

-XX:PermSize=[n]  최소 perm size 
 

( JVM에서 OutOfMemoryError: PermGen space 에러가 자주 발생할 때
Heap 메모리가 부족하여 발생하는 줄 알고 -Xmx 옵션으로 늘려도 똑같이 발생.
원인은 PermSize 옵션 때문 .
PermSize는 JVM에서 사용하는 메타데이터에 대한 정보(즉 영구적으로 사용하는)에 대한 저장공간이다. 대표적인 예가 리플렉션에서 사용하는 클래스에 대한 정보들이다.
최근에 와서야 이런 오류가 자주 발생하는 이유는 Spring 프레임워크를 사용하기 때문이다. Spring 프레임워크에서는 AOP, DI 들을 지원하기 위해 많은 리플렉션 기능을 사용하고 Proxy를 이용하여 runtime에 클래스를 만들어 사용한다. 따라서 기존 방식에 비해 많은 메타데이터 저장공간이 필요하게 되었던 것이다.  )

 

 

 

-XX:MaxPermSize=[n]  최대 perm size 
 

-XX:NewSize=[n]  최소 new size 
 

-XX:MaxNewSize=[n]  최대 new size 
 

-XX:SurvivorRatio=[n]  New/survivor 영역 비율  
 

-XX:newratio=[n]  Old/new 영역 비율. HotSpot 클라이언트 VM은 8, HotSpot 서버 VM은 2. 
 

-XX:TargetSurvivorRatio=[n]  GC동안 비울 생존자 수용 가능량 퍼센티지 (capacity percentage.) 초기값은 50%

 

 

-XX:+HeapDumpOnOutOfMemoryError HeapDumpOnOutOfMemory 명령줄 옵션을 사용하면 Out Of Memory 오류 상태가 되었을 때 JVM이 Java 힙의 스냅샷을 덤프하게 됩니다. HeapDumpOnOutOfMemoryError 기능은 SDK 1.4.2.11 및 JDK 1.5.0.04와 함께 사용할 수 있습니다.

 

 

 

* New Generation 메모리 할당 공식 
   Eden = NewSize - ((NewSize/(SurvivorRatio + 2)) * 2) 
   From space = (NewSize - Eden)/2 
   To space = (NewSize - Eden)/2 
 

* Old Generation 메모리 할당 공식 
   Old = Xmx - MaxNewSize

 

* GC한 상태의 Heap메모리 정보출력 
jdk1.4에서 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC 

 

* 정적페이지가 많을 때 
-Xms418m -Xmx418m  
-XX:PermSize=1024m  
-XX:MaxPermSize=1024m  
-XX:NewSize=290m  
-XX:MaxNewSize=290m  
-XX:SurvivorRatio=3 

 

* 동적인 페이지가 많을 때 
-Xms1024m -Xmx1024m  
-XX:PermSize=128m  
-XX:MaxPermSize=128m  
-XX:NewSize=800m  
-XX:MaxNewSize=800m  
-XX:SurvivorRatio=4 

-Xms384m -Xmx384m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=3 

set CATALINA_OPTS=-Xms384m -Xmx384m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=3 
 

 

Xms: 최초 JVM 이 로드될 때 부여할 메모리
4 Xmx: 최대 JVM 이 가질 수 있는 메모리
5 MaxPermSize: JVM 내의 클래스 정보가 담길 최대 메모리

 

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/tomcat/jvm_dump -Xms2048m -Xmx2048m -XX:PermSize=1024m -  XX:MaxPermSize=1024m"

 

 

========================================================================

export CATALINA_OPTS="-Djava.awt.headless=true -Xms512m -Xmx512m"

 

관련 URL : http://gnujava.com:8000/board/article_view.jsp?article_no=867&idx_notice=NOTICE_FLAG+DESC%2C&board_no=6

 

->윈도우/리눅스 heap size 설정

 

출처 : http://crowz.co.kr/250

TAG •
?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 927567
2306 육아,교육 2016년 의대 서열 file JaeSoo 2016.04.21 605
2305 유닉스/리눅스 리눅스 logrotate 에서 로그파일 강제로 rotate 시키기 file JaeSoo 2016.03.30 700
2304 데이터베이스 [Oracle] Lock 확인 및 Lock 해제 JaeSoo 2016.03.28 640
» 웹서버,WAS Tomcat JVM heap memory set 및 size JaeSoo 2016.03.23 703
2302 웹서버,WAS Java 실행 옵션 정리 JaeSoo 2016.03.23 623
2301 응용 프로그래밍 메모리 영역 (code, data, stack, heap) file JaeSoo 2016.03.23 744
2300 유닉스/리눅스 리눅스 시간 맞추기 : Time Server와 Sync (rdate, date) JaeSoo 2016.03.19 705
2299 가상화 vCenter 없이 vSphere 로 ESXi 에 연결해서 가상머신 복사하기 file JaeSoo 2016.03.18 730
2298 가상화 Workstation용 .vmdk를 esxi 전용으로 변환하기 file JaeSoo 2016.03.17 662
2297 하드웨어 J1900 vs 1037u vs D2700 vs D525 vs D2550 vs D2500 file JaeSoo 2016.03.17 586
2296 하드웨어 CPU 온도에 관한 진실 file JaeSoo 2016.03.17 575
2295 윈도우즈 윈도우7 한글입력이 안될때 ctfmon.exe file JaeSoo 2016.03.13 774
2294 윈도우즈 Microsoft IME 입력기가 사라진 현상 JaeSoo 2016.03.13 607
2293 모바일 블루스택 GPU 사용으로 CPU 부하를 줄이는 방법 file JaeSoo 2016.03.07 802
2292 모바일 안드로이드 개발자 옵션(developer options)을 액세스하는 방법 file JaeSoo 2016.03.07 964
2291 모바일 블루스택 설치 및 설정, 레이븐, 히트, 성순매크로 설치 방법 JaeSoo 2016.03.07 1482
2290 윈도우즈 윈도우에서 특정 프로세스 강제 종료하는 방법 (taskkill) file JaeSoo 2016.02.19 872
2289 유닉스/리눅스 [Linux/Unix] 심볼릭 링크(ln) 만들기 및 확인/삭제 JaeSoo 2016.02.19 900
2288 윈도우즈 윈도우 8 웹 브라우저 사용흔적 (Windows 8 Web Browser Artifacts) file JaeSoo 2016.02.13 1043
2287 윈도우즈 '윈도우 7' 에서 폴더 여는 시간이 오래 걸린다면? file JaeSoo 2016.02.12 746
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너