티스토리 뷰

SW개발

Tomcat8 Heap memory size

개소왕 2018. 6. 14. 18:57

 톰캣 힙 메모리 올리기


* 개요 

- 새로만든 Spring MVC 용 프로그램이 

Exception in thread “main”: java.lang.OutOfMemoryError: Java heap space 보이며 동작하지 않음.

- 톰캣의 힙 사이즈 올려줄 필요 있다고 생각됨.


#tomcat memory #톰캣 메모리



* 환경

Ubuntu 16.04

Tomcat 8.5



* Tomcat 이 사용중인 Heap memory size 확인 


1. jMap 설치

sudo apt install openjdk-8-jdk-headless


2. tomcat8 의  pid 확인

ps -aux | grep tomcat


- 참고 : PID 확인

https://m.blog.naver.com/PostView.nhn?blogId=post_human&logNo=220047836747&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F


...

root      3257 54.9 29.0 7756368 2334148 pts/8 Sl+  15:36 163:41 /usr/lib/jvm/java-8-oracle/bin/java -Dcatalina.base=/home/udell/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1 -Dcatalina.home=/home/udell/tomcat/apache-tomcat-8.5.30 -

... [생략]

 20722  0.0  0.0  17184  2124 pts/3    S+   18:52   0:00 grep --color=auto tomcat8



- 주의 : 실행중인 ps 명령에 대한 pid 도 함께 나오므로 혼동하지 않아야 함


3. sudo jmap -heap 3257


- sudo 안하면 DebuggerException


https://blog.outsider.ne.kr/793






* 톰캣 Heap Memory size 올리기

- 다음 내용에 대한 환경변수 설정이 필요함


export CATALINA_OPTS="$CATALINA_OPTS -Xms512m"

export CATALINA_OPTS="$CATALINA_OPTS -Xmx8192m"


#export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m" 

#Heap 과는 무관



- Xms 는 Heap 최소 크기, Xmx 는 최대크기
- 위 내용을 catalina.sh  가 있는 디렉토리에

setenv.sh 파일을 생성하여 위의 내용을 집어넣음.

(/usr/share/tomcat8/bin)




- 일반적인 방법대로 터미널창에서 실행하거나,
/etc/bash.bashrc 에 추가해서는 되지 않았음. (이유는 몰라)
( echo $CATALINA_OPTS  또는
 export | grep CATALINA_OPTS 통해 설정된것을 확인했음에도 안 됨..)



-  설정후 시스템 재시작 하면 (service tomcat8 restart)

위의 jmap 통한 방법으로 heap size 증가 된것을 확인할 수 있음..


- 다른 확인 방법으로 로그파일 (/var/log/catalina.날짜.log) 에서 설정확인할 수 있음

cat /var/log/tomcat/catalina.날짜.log | grep Xms

(catalina.out 아님.. ) 





*  메모리를 얼마로 설정할 것인가? 

http://bcho.tistory.com/788 "아파치 톰캣 튜닝 가이드"


- Heap size 는 1G가 적당..

1G 설정시 Process 가 사용하는 공간은 Heap 1G + Perm 128 + JVM 자체 0.5G = 1.5G 전후가 되는데,

이 사이즈가 2G 를 넘지 않는 것이 좋고, 최대 3G를 권장.

(너무 크면 Full GC 의 시간이 높아짐.)


- 가용 메모리가 많다면 Heap 을 높이기보단 톰캣 인스턴스를 여러개 띄워서 클러스터링 등 사용을 권장


- 크다고 좋은것도 아냐..

https://okky.kr/article/256552




* 기타 : 다른 OutOfMemoryError


http://www.nextree.co.kr/p3878/



* 기타 : JVM 메모리 구조

http://huelet.tistory.com/entry/JVM-%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0



* 기타 : JMX - JConsole 이용한 메모리 모니터링

https://gs.saro.me/#!m=elec&jn=776


- 나는 톰캣 서비스 시작이 안되어 실패

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함