kyucumber
전체 글 보기

Failed to validate connection 이슈

아래와 같은 WARN 로그가 지속적으로 발생하는 문제를 겪었습니다.

Failed to validate connection (No operations allowed after connection closed.)

서비스에는 큰 영향이 없어보이나, 간헐적으로 발생하는 WARN 로그가 신경쓰여서 어떤 이유로 발생하는 것인지 찾아보았습니다.

해당 WARN 로그는 HikariCP의 maxLifeTime보다 데이터베이스의 wait_timeout이 더 짧은 경우 발생하는 문제였습니다.

wait_timeout

아래 명령어로 데이터베이스의 wait_timeout 값을 확인할 수 있습니다.

show global variables like 'wait_timeout'

데이터베이스는 설정된 wait_timeout 시간이 지나면 커넥션을 끊습니다.

HikariCP maxLifeTime

HikariCP는 커넥션을 관리하며, 설정된 max-lifetime이 지나기 전에 커넥션을 끊습니다.

wait_timeout 값보다 max-lifetime이 긴 경우 끊긴 커넥션으로 작업을 시도하며, 그 과정에서 아래와 같은 에러가 발생합니다.

Failed to validate connection (No operations allowed after connection closed.)

따라서 아래와 같이 max-lifetime 값을 설정된 wait_timeout보다 항상 짧게 주어야 Failed to validate connection WARN 로그가 발생하지 않습니다.

hikari: max-lifetime: 56000

Reference