노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

Tomcat Memory Leak

VisualVM을 사용해서, 메모리 누수를 찾기 위해, Tomcat 연결 하기


1. VisaulVM 다운로드

> Download 주소 : https://visualvm.github.io/download.html

> Monitor : CPU, Heap/Metaspace, Classes, Threads

> Plugin Download: https://visualvm.github.io/plugins.html


2. Tomcat setenv.sh 설정하기

위치 : ~tomcat/bin

#!/bin/sh

export CATALINA_OPTS="$CATALINA_OPTS

 -Dcom.sun.management.jmxremote.authenticate=false"

export CATALINA_OPTS="$CATALINA_OPTS

 -Dcom.sun.management.jmxremote.port=9999"

export CATALINA_OPTS="$CATALINA_OPTS

 -Dcom.sun.management.jmxremote.ssl=false"

export CATALINA_OPTS="$CATALINA_OPTS 

-Djava.rmi.server.hostname=localhost"


3. Tomcat 재시작


4. 연결하기 : ViusalVM - Remote - Add Host - Add Jmx Connection

* localhost가 서버인 경우에는 IP와 hostname를 매칭을 해 주세요. 

(/etc/hosts에 등록을 해도 됩니다.)


5. Heap Dump 

- 원격 Dump는 8-900M를 압축해서 다운로드

- Eclipse에서 Memory Analyzer(http://www.eclipse.org/mat/) 열기를 수행하면,
leak problem suspect를 접근 가능


> 원문 : java.lang.OutOfMemoryError: Metaspace

Tomcat는 1.25GB를 넘게 설정된 MaxMetaspaceSize지만,....
remote JMX 연결을 허용해서, VisualVM을 통해, metaspace를 살펴본다

https://apollogic.com/en/2017/05/fixing-memory-leaks-tomcat/


> 참조 : Metaspace란?

Java 7의 PermGen(Permanent Generation) Java 8에서는 사라지고, Metaspace라는 네이티브 메모리 영역으로 클래스 메타데이터들이 모두 이동했다...
heap영역에서 사용할 수 있는 메모리가 늘어났다...

http://starplatina.tistory.com/entry/JDK8%EC%97%90%EC%84%A0-PermGen%EC%9D%B4-%EC%99%84%EC%A0%84%ED%9E%88-%EC%82%AC%EB%9D%BC%EC%A7%80%EA%B3%A0-Metaspace%EA%B0%80-%EC%9D%B4%EB%A5%BC-%EB%8C%80%EC%8B%A0-%ED%95%A8

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,