MONITORING/Troubleshooting

Java OutOfMemory 분석 방법 (heapdump, HeapAnalyzer)

행운개발자 2024. 1. 21. 10:17
728x90

분석 방법

IBM HeapAnalyzer 다운로드

 

https://www.ibm.com/support/pages/ibm-heapanalyzer

 

IBM HeapAnalyzer

 

www.ibm.com

 

heapDump 옵션 추가

 

heapDump를 생성하고 싶은 jar에 아래 옵션 추가해서 서비스 재시작

-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/{YOUR_DIRECTORY}/heapdump.hprof 
-XX:+CrashOnOutOfMemoryError

 

 

 

HeapAnalyzer 실행

HeapAnalyzer 실행 및 생성된 heapdump 로딩 (heapdump 사이즈가 클 수록 로딩 시간 오래 걸림)

java -Xmx2g -jar {HeapAnalyzer}.jar

 

분석

  1. heapDump 로딩 및 %가 높은 클래스 확인
  2. 문제가 되는 클래스 확인 및 원인 추정

예시

 

OOM 발생

 

heapDump 확인

 

문제가 되는 클래스 특정하고 애플리케이션 로직 상의 문제점을 파악

 

분석 예시 

1. SendToProxyBatchCore의 RequestQueue에서 대부분의 메모리를 사용함

2. LambdaProxy → Proxy로의 RequestQueue에서 병목으로 추정

3. 애플리케이션 로직 개선, RequestQueue 사이즈 증가 등

 

728x90