고객사 서비스 운영 중 경고(WARN) 로그가 눈에 뛰었다.
관리자 서비스라 사용자도 적고 사용하는데 지장이 없었지만 원인이 무엇인지 그리고 어떻게 처리 해야하는 지 알아보기로 하였다.
발생된 로그는 아래와 같다.
hikariPool - Failed to validate connection org.mariadb.jdbc.MariaDbConnection@7aa2f8a6 ((conn=463456) Connection.setNetworkTimeout cannot be called on a closed connection). Possibly consider using a shorter maxLifetime value.
실패했단다.. 연결 검증을?? 닫혔는 연결로는 호출할 수 없다? 대략 그런거 같다.
가능한~ 고려해라 사용ing 짧은 최대삶시간 값을...
쪼렙 개발자라 열심히 구글링 하고 hikari와 참고출처를 보고 현재 고객 서비스의 상황을 파악하였다.
DBMS의 wait_timeout 은 60s으로 설정되어 있었고,
서비스의 maxLifeTime 은 580s으로 되어 있었다.
DBMS의 wait_timeout은 'Idle(게으른) 상태의 연결을 wait_timeout 시간이 지나면 DBMS에서 연결을 종료' 한다.
서비스의 maxLifeTime은 'Idle(게으른)인 상태의 연결을 서비스에서 끊고 다시 연결' 한다.
wait_timeout보다 maxLifeTime이 크다면 DBMS에서 끊어진 CP를 사용하여 위와 같은 경고성 로그가 발생된다.
그러므로 서비스의 maxLifeTime은 DBMS의 wait_timeout보다 짧아야 한다고 설명한다.
그래서 서비스의 maxLifeTime을 58초로 설정하여 배포 후 처리를 완료 하였다.