RadarURL

웹서버,WAS
2016.03.23 02:30

Tomcat JVM heap memory set 및 size

조회 수 702 추천 수 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 927561
34 웹서버,WAS 용량 산정 (동시 접속자 계산) JaeSoo 2016.05.05 1028
33 웹서버,WAS 아파치 httpd.conf 재시작 없이 설정 적용하기 JaeSoo 2016.05.02 644
» 웹서버,WAS Tomcat JVM heap memory set 및 size JaeSoo 2016.03.23 702
31 웹서버,WAS Java 실행 옵션 정리 JaeSoo 2016.03.23 623
30 웹서버,WAS [JAVA] 개발환경설정 - 표준프레임워크 file JaeSoo 2016.01.02 791
29 웹서버,WAS Tomcat 7.x 와 8.x 간의 default configuration 차이 JaeSoo 2016.01.02 716
28 웹서버,WAS 톰캣 8 소개 JaeSoo 2016.01.01 517
27 웹서버,WAS 리눅스 webalizer를 통한 apache log(웹서버 접속 통계) 분석하기 (추천) JaeSoo 2014.12.25 1098
26 웹서버,WAS 리눅스 아파치 로그 뷰어 webalizer, utf-8로 변환하기 file JaeSoo 2014.12.22 877
25 웹서버,WAS Webalizer Configuration – Configure Webalizer for SEO JaeSoo 2014.12.22 1411
24 웹서버,WAS Webalizer, AWStats에서 국가 정보 확인하기 file JaeSoo 2014.12.22 854
23 웹서버,WAS Webalizer에서 국가별 로그 출력하기 file JaeSoo 2014.12.22 1080
22 웹서버,WAS Apache: A good Webalizer.conf for the Webalizer Apache Log Analyzer utility file JaeSoo 2014.12.22 1229
21 웹서버,WAS 아파치 로그분석 webalizer 설치 file JaeSoo 2014.12.21 7901
20 웹서버,WAS Permission denied: .htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable JaeSoo 2014.12.19 10007
19 웹서버,WAS Permission denied: /home/.htaccess pcfg_openfile: unable to check htaccess file JaeSoo 2014.12.19 699
18 웹서버,WAS pcfg_openfile: unable to check htaccess file, ensure it is readable JaeSoo 2014.12.19 697
17 웹서버,WAS XE로 데이터 이전 후 게시판 출력 순서(list_order) 조정 1 JaeSoo 2014.07.06 1914
16 웹서버,WAS 리눅스 사용자 계정별 웹서버 운영하기 JaeSoo 2014.05.27 1725
15 웹서버,WAS Apache 서버에서 확장자 .htm 파일 내의 php 코드가 실행되지 않는 문제 해결 방법 JaeSoo 2014.05.26 2170
Board Pagination Prev 1 2 Next
/ 2


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

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

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

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

JServer.kr

제이서버 메타블로그

재수 티스토리


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

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너