안녕하세요. ‘컬리로' 팀의 김동호입니다.
팀 내에서 사용중이던 JDBC Driver를 MariaDB에서 MySQL로 변경한 이후, 운영중인 AWS EC2가 OOM이 발생하며 종료되고 새로운 인스턴스로 교체되는 현상이 주기적으로 일어났습니다. 이로인해 한동안 새벽에도 모니터링 알람을 받게 되었으며, 문제를 해결하기 위해 여러 방법들을 시도한 끝에 DB Connection 누수 문제를 발견하여 해결하였습니다.
이 글에서는 DB Connection의 생명 주기(Lifecycle)와 함께 DB Connector와 Garbage Collector의 관계를 분석합니다. 그리고 Connection 누수(Leak)가 발생하는 이유와, 해결 방법을 정리하여 공유합니다.