다음을 통해 공유


연결 복원력(JDBC)

JDBC 드라이버 다운로드

연결 복원력을 사용하면 제한된 범위 내에서 끊어진 유휴 연결을 다시 설정할 수 있습니다. 초기 연결에 실패하면 연결 복원력을 통해 드라이버에서 자동으로 다시 연결을 시도할 수도 있습니다. SQL Server 2014 이상 및 Azure SQL Database에서만 끊어진 유휴 연결을 다시 설정할 수 있습니다. 이 기능은 Microsoft JDBC Driver 10.2.0 for SQL Server부터 사용할 수 있습니다.

연결 다시 시도

연결 복원력에는 두 가지 측면이 있습니다. 첫 번째는 초기 데이터베이스 연결을 투명하게 다시 시도하는 기능입니다. 두 번째는 기존 유휴 연결을 투명하게 복원하는 기능입니다. 일반적인 유휴 연결은 연결 풀에 있는 연결일 수 있습니다. “유휴” 연결은 일반적으로 30초 이상 유휴 상태인 연결입니다. 이러한 연결은 클라이언트와 서버 간의 네트워크 디바이스 또는 서버에서 닫을 수 있는 경우가 많습니다.

JDBC 드라이버에는 연결 복원력 동작을 제어하는 두 가지 연결 옵션이 있습니다. 이러한 옵션은 연결 문자열에 추가하거나 데이터 원본 속성을 통해 설정할 수 있습니다.

키워드 기본 설명
connectRetryCount 0과 255(포함) 사이의 정수 1 포기하기 전에 연결을 설정하거나 다시 설정하는 최대 시도 횟수입니다. 기본적으로 한 번 다시 시도합니다. 0 값은 다시 시도하지 않음을 의미합니다.
connectRetryInterval 1과 60(포함) 사이의 정수 10 연결을 다시 시도하는 간격(초)입니다. 드라이버는 끊어진 유휴 연결을 검색하는 즉시 다시 연결을 시도하고 다시 시도하기 전에 connectRetryInterval초 동안 대기합니다. connectRetryCount가 0이면 이 키워드는 무시됩니다.

connectRetryCountconnectRetryInterval을 곱한 값이 loginTimeout보다 클 경우 드라이버는 loginTimeout에 도달하면 연결 시도를 중지합니다. 그렇지 않으면 connectRetryCount에 도달할 때까지 다시 연결을 계속 시도합니다.

연결 복구

끊어진 유휴 연결을 검색하기 위해 드라이버는 소켓 수준에서 TCP keepalive 패킷을 사용합니다. Linux 및 Java 11 이상에서는 오류가 발생할 경우 다시 시도 간에 1초의 지연 시간을 두고 30초 간격(KeepAliveTime)으로 드라이버가 keepalive 패킷을 사용하도록 자동 설정합니다(KeepAliveInterval).

중요

Windows 및 macOS 또는 Java 8에서 끊어진 유휴 연결 복원을 활용하려면 운영 체제에서 keepalive를 수동으로 구성해야 합니다. keepalive를 구성하는 방법에 대한 내용은 Azure SQL 데이터베이스에 연결을 참조하세요.

제한 사항

다음의 경우 끊어진 유휴 연결을 복원할 수 없습니다.

  • 완전히 구문 분석되거나 버퍼링되지 않은 개방형 결과 집합이 있는 경우
  • Azure SQL 데이터베이스를 전환하는 경우
  • 개방형 트랜잭션이 있는 경우

추가 정보

Azure SQL 데이터베이스에 연결
기술 문서 - 유휴 연결 복원력
JDBC 드라이버 개요