JDBC에서 연결 풀 설정을 조사했습니다.

소개



폐사에서 운용하고 있는 시스템에서 갑자기 데이터베이스에 접속할 수 없는 현상이 발생했다.
시스템의 핵심이라고 하는 데이터베이스에 접속할 수 없다 = 시스템을 사용할 수 없는 상황에 빠졌습니다.

조사한 결과, 데이터베이스에 재시작이 실행되었기 때문에, 어플리케이션 서버에서 안고 있던 접속 풀이 전멸한 것이 원인이었습니다. 전멸 후에도, 특히 재접속이 행해지지 않고, 복구까지의 사이에 시스템에 사망 플래그가 서 버렸습니다. 커넥션 풀의 설정도, 사이즈 주위는 변경한 것의 다른 설정은 디폴트인 채로 있었습니다.

기술 스택




품목
이름
버전


AP 서버
Payara 서버
4.1

언어
자바
8

DB
Amazon Aurora PostgreSQL
9.6


현상



원래 연결 풀은 비용이 많이 드는 DB 연결을 사용하려고 하는 구조입니다.
앱 서버 시작 시 다음과 같은 상태가 됩니다.



연결이 정상이면 요청시 다음과 같습니다.



이번에는 데이터베이스가 재부팅되어 다음과 같은 상태가 되었습니다.



이 상태를 유지하면서 연결 상태가 비정상인 상태로 연결 풀에 남아 있으며 앱에서 데이터베이스에 연결할 수 없습니다.

대응



대응으로서는, 풀내에 있는 접속을 모두 재접속시키는 것을 하는 것입니다.
  • 연결 상태 확인


  • 풀의 모든 연결 삭제


  • 재연결



  • 이번 수정한 파라미터



    파라미터의 설정값은 환경에 따라 적절히 변경해 주십시오.


    매개변수
    개요
    설정값


    connection-creation-retry-attempts
    재연결 재시도 횟수
    3

    connection-creation-retry-interval-in-seconds
    재접속 재시도 간격
    10

    is-connection-validation-required
    접속 검증 유무
    true

    validate-atmost-once-period-in-seconds
    연결 검증 간격
    1

    fail-all-connections
    연결 이상시 모든 풀 삭제 여부
    true

    좋은 웹페이지 즐겨찾기