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영역에서 사용할 수 있는 메모리가 늘어났다...
'Web Tech. > Spring Framework' 카테고리의 다른 글
LINE(라인, 그룹채팅방)으로 메시지 보내기 - 방법1 (0) | 2019.05.19 |
---|---|
thread-safe하도록 servlet작성하기 (0) | 2018.07.20 |
Java Spring + Slack Web Hook API (0) | 2018.03.13 |
페이스북 Graph API 사용하기 (0) | 2017.09.26 |
Bash , Kill $pids (0) | 2017.09.11 |