목록 보기
MAT을 활용한 HeapDump 분석
백엔드

MAT을 활용한 HeapDump 분석

넥스트리
넥스트리
2026년 6월 26일

두줄요약

K8s 환경에서 반복 재시작의 원인이 OOMKilled일 때 Heap Dump와 MAT로 원인을 추적하는 방법을 다뤘습니다. 로그로 보이지 않는 메모리 누수와 참조 관계를 분석해 DB I/O 병목까지 찾아내는 흐름을 설명했습니다.

문제 상황

  • K8s 파드가 반복 재시작되며 Last State에 OOMKilled가 남는 상황
  • 로그만으로는 원인 파악이 어려운 서서히 누적되는 메모리 문제

원인 분석

  • JVM 힙에 객체가 계속 쌓이지만 강한 참조로 인해 GC 회수 실패
  • 비동기 처리 과정의 DB I/O 병목으로 메시지 소비 속도가 생산 속도를 따라가지 못함

해결 방법

  • Heap Dump로 특정 시점의 힙 객체와 참조 관계를 스냅샷으로 확보
  • MAT의 Leak Suspects, Dominator Tree, Path to GC Roots로 누수 의심 객체 추적

주의할 점

  • K8s에서 파드 종료 시 덤프 파일이 사라질 수 있어 영속 스토리지 경로 필요
  • 자동 덤프 옵션과 수동 추출 방식의 운영 환경별 고려 필요

적용해볼 점

  • OOM 발생 시 -XX:+HeapDumpOnOutOfMemoryError와 HeapDumpPath 설정
  • Retained Heap이 큰 객체와 참조 경로를 우선 확인

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...