목록 보기
99%가 모른다는 DB Connection 누수 문제
백엔드

99%가 모른다는 DB Connection 누수 문제

마켓컬리
마켓컬리
2025년 1월 5일

두줄요약

JDBC Driver 변경 이후 발생한 OOM 원인을 DB Connection 누수로 추적하고 Heap Dump로 확인했습니다. mysql-connector-j 업그레이드와 cleanup thread 비활성화로 문제를 해결했습니다.

문제 상황

  • MariaDB에서 MySQL JDBC Driver로 변경한 뒤 AWS EC2 인스턴스가 주기적으로 OOM으로 종료되는 현상
  • API 응답 지연과 함께 메모리 사용량이 지속적으로 증가하는 장애 징후

원인 분석

  • Heap Dump 분석 결과 AbandonedConnectionCleanupThread와 connectionFinalizerPhantomRefs에 메모리 집중
  • mysql-connector-j의 연결 정리 작업이 단일 스레드로 처리되어 병목 발생
  • HikariCP의 짧은 max-lifetime 설정으로 Connection 재생성 속도가 처리 속도를 초과

해결 방법

  • mysql-connector-j 8.0.22 이상으로 업그레이드
  • -Dcom.mysql.cj.disableAbandonedConnectionCleanup=true 옵션으로 cleanup thread 비활성화
  • max-lifetime 조정과 옵션 적용 후 메모리 점유 개선 확인

댓글 0

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

댓글을 불러오는 중...