에러 상황
AWS의 RDB에서 wait_timeout을 3분으로 설정한 후 콘솔창에 아래와 같은 경고 메시지가 표시됐다.
에러 코드
WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection
해결 방법
해당 에러는 RDB에서 설정한 wait_timeout 설정과 hikari의 max-lifetime의 설정이 맞지않아서 발생하는 에러이다.
hikari의 lifetime은 30분이 기본값으로 설정되어 있기때문에 위와 같은 현상이 발생한다.
RDB는 설정된 wait_timeout에 따라 연결된 커넥션을 끊는다.
Spring 서버는 idle 상태의 커넥션을 max-lifetime이 지나면 새로운 커넥션을 생성하게 된다.
따라서, max-lifetime이 wait_timeout보다 짧아야 RDB가 커넥션을 끊기 전에
Spring 서버 스스로 연결을 끊고 커넥션을 맺기 때문에 위와 같은 현상이 발생하지 않게 된다.
실제로 hikari는 네트워크 지연을 고려하여 max-lifetime을 wait_timeout 보다 2~3초 짧게 줄 것을 권고한다.
Spring에서 아래의 설정을 추가해주면 해당 에러는 사라지게 된다.
datasource:
hikari:
max-lifetime: 177000 # wait_timeout보다 2~3초 짧게 설정한다
참고 사이트
https://gksdudrb922.tistory.com/228
[Spring] Failed to validate connection
서비스 운영 중 아래와 같은 경고 로그가 지속적으로 생겼다. hikariPool - Failed to validate connection org.mariadb.jdbc.MariaDbConnection@7aa2f8a6 ((conn=463456) Connection.setNetworkTimeout cannot be called on a closed connection). P
gksdudrb922.tistory.com
'🗄️AWS > AWS' 카테고리의 다른 글
[AWS] Data source rejected establishment of connection, message from server: "Too many connections" (0) | 2025.02.17 |
---|---|
[AWS] Request method 'GET' is not supported (1) | 2025.02.04 |
[AWS] 가비아 SSL 인증서로 AWS HTTPS 등록하기 (0) | 2025.02.03 |
[AWS] Windows에서 jar파일을 AWS 서버에 배포하기 - (2) Dockerfile을 이용한 AWS 배포 (1) | 2024.04.19 |
[AWS] Windows에서 jar파일을 AWS 서버에 배포하기 - (1) 배포를 위한 기본 세팅 (1) | 2024.04.19 |
댓글