목록 보기
Aurora MySQL의 숨겨진 idle close 동작 — HikariCP "Failed to validate connection" 추적기
백엔드

Aurora MySQL의 숨겨진 idle close 동작 — HikariCP "Failed to validate connection" 추적기

여기어때
여기어때
2026년 6월 8일

두줄요약

Aurora MySQL에서 HikariCP의 idle connection 검증 실패 원인을 추적해 비표준 timeout 동작을 확인했습니다. interactive_timeout 이 keepalive 보다 작으면 비활성 연결이 먼저 끊길 수 있음을 정리했습니다.

문제 상황

  • HikariCP에서 Failed to validate connection WARN 로그가 분당 다수 발생
  • keepaliveTime 30초보다 먼저 DB 쪽에서 connection 이 끊기는 현상

원인 분석

  • 표준 MySQL의 wait_timeout 단독 적용이라는 가정과 실제 동작이 불일치
  • interactive_timeout 변경만으로 WARN 이 즉시 멈춘 점으로 비표준 idle 종료 동작 확인
  • Aurora MySQL 에서 wait_timeoutinteractive_timeout 중 작은 값이 effective timeout 으로 적용

해결 방법

  • DB 파라미터에서 interactive_timeout 을 keepalive 주기보다 충분히 크게 조정
  • HikariCP keepalive 시간과 Aurora idle timeout 간 간격 재검토

구조와 흐름

  • community MySQL의 one-thread-per-connection 모델과 Aurora의 thread-pool + monitor thread 모델 차이 설명
  • Aurora 에서 idle connection 을 별도 모니터 thread 가 주기적으로 정리하는 메커니즘 정리

주의할 점

  • JDBC가 non-interactive라 해도 Aurora에서는 interactive_timeout 이 영향
  • 짧은 idle 값에서는 monitor 주기 때문에 타이밍 편차 발생 가능

다음 읽기

#HikariCP 주제를 다룬 다른 회사 글

배포 직후 발생하는 응답 지연을 해결하기 위한 여정 (feat. JVM 웜업)

배포 직후 발생하던 DB Connection Timeout과 응답 지연의 원인을 분석했습니다. JVM 웜업과 startupProbe 적용으로 초기 지연 문제를 해결했습니다.

카카오페이
카카오페이
백엔드

댓글 0

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

댓글을 불러오는 중...