연결 다시 시도 알고리즘(TCP/IP 연결용)
새 설치: 2006년 4월 14일
TCP/IP 연결의 경우 클라이언트에서 Microsoft Windows XP 이상을 실행 중이면 두 파트너 이름이 캐시에 있을 때 데이터 액세스 공급자가 연결 다시 시도 알고리즘을 따릅니다. 이는 세션에 대한 초기 연결을 설정하는 경우와 설정된 연결이 끊어진 후 다시 연결하는 경우에 모두 적용됩니다. 연결이 열려 있으면 사전 로그인 및 로그인 단계를 완료하는 데 추가 시간이 필요합니다.
[!참고] 느린 DNS 조회, 느린 도메인 컨트롤러/Kerberos KDC(키 배포 센터), SQL Server Browser 연결 시간, 많은 네트워크 사용량 등의 외부 요소로 인해 연결에 소요되는 시간이 다시 시도 시간을 초과할 수 있습니다. 이러한 외부 요소 때문에 클라이언트가 미러된 데이터베이스에 연결하지 못할 수 있습니다. 또한 외부 요소로 인해 연결을 여는 데 걸리는 시간이 할당된 다시 시도 시간을 초과할 수 있습니다. 초기 파트너에 대한 연결 시도에서 DNS 및 SQL Server Browser를 무시하는 방법은 데이터베이스 미러링 세션에 대한 초기 연결 설정을 참조하십시오.
연결 시도가 실패하거나 성공하기 전에 다시 시도 시간이 만료하면 데이터 액세스 공급자는 다른 파트너에 연결을 시도합니다. 이때 연결이 열려 있지 않으면 공급자는 연결이 열리거나 로그인 기간이 시간 초과될 때까지 초기 및 장애 조치(Failover) 파트너 이름에 연결을 시도합니다. 기본 로그인 제한 시간은 15초입니다. 로그인 제한 시간을 5초 이상으로 설정하는 것이 좋습니다. 너무 짧은 제한 시간을 지정하면 연결 시도가 하나도 성공하지 못할 수 있습니다.
다시 시도 시간은 로그인 기간의 백분율입니다. 연결 시도의 다시 시도 시간은 연속 라운드가 진행됨에 따라 더 커집니다. 첫 번째 라운드에서 두 시도 중 각각의 다시 시도 시간은 총 로그인 기간의 8%입니다. 다시 시도 알고리즘은 각 연속 라운드에서 최대 다시 시도 시간을 동일한 양만큼 늘립니다. 따라서 처음 8개 연결 시도의 다시 시도 시간은 다음과 같습니다.
8%, 8%, 16%, 16%, 24%, 24%, 32%, 32%
다시 시도 시간은 다음 수식을 사용하여 계산됩니다.
RetryTime**=PreviousRetryTime+(** 0.08 *LoginTimeout)
여기서 PreviousRetryTime의 초기값은 0입니다.
예를 들어 기본 로그인 제한 시간이 15초이면 LoginTimeout = 15입니다. 이 경우 처음 세 라운드에 할당되는 다시 시도 시간은 다음과 같습니다.
라운드 | RetryTime 계산 | 시도당 다시 시도 시간 |
---|---|---|
1 |
0 +(0.08 * 15) |
1.2초 |
2 |
1.2 +(0.08 * 15) |
2.4초 |
3 |
2.4 +(0.08 * 15) |
3.6초 |
4 |
3.6 +(0.08 * 15) |
4.8초 |
다음 그림에서는 각각 시간 초과되는 연속 연결 시도의 다시 시도 시간을 보여 줍니다.
기본 로그인 제한 시간 동안 처음 세 라운드의 연결 시도에 할당되는 최대 시간은 14.4초입니다. 각 시도에서 할당된 시간을 모두 사용하는 경우 로그인 기간이 시간 초과되기까지 0.6초의 시간만 남습니다. 이 경우 네 번째 라운드는 단축되어 초기 파트너 이름을 사용하여 빨리 연결할 수 있는 최종 시도만 허용합니다. 그러나 특히 이후 라운드에서 연결 시도가 할당된 다시 시도 시간보다 먼저 실패할 수 있습니다. 예를 들어 네트워크 오류가 발생하면 다시 시도 시간이 만료되기 전에 시도가 종료될 수 있습니다. 네트워크 오류로 인해 이전 시도가 실패하면 네 번째 라운드 및 추가 라운드에 더 많은 시간을 사용할 수 있습니다.
연결 시도에 실패하는 또 다른 원인에는 서버 인스턴스가 데이터베이스 장애 조치를 수행할 때 발생하는 비활성 서버 인스턴스가 있습니다. 이 경우 다시 시도가 지연되어 클라이언트가 연결 시도를 빨리 연속하여 파트너를 오버로드하지 않도록 방지합니다.
[!참고] 두 파트너 이름을 모두 사용할 수 있을 경우 로그인 제한 시간이 정해져 있지 않으면 클라이언트는 초기 파트너 이름과 장애 조치 파트너 이름을 교대로 사용하여 무제한으로 서버에 다시 연결합니다.
장애 조치 중 다시 시도 지연
클라이언트가 장애 조치 중인 파트너에 연결하면 해당 파트너가 비활성 상태라고 즉시 응답합니다. 이 경우 각 라운드의 연결 시도가 할당된 다시 시도 시간보다 훨씬 짧습니다. 즉, 로그인 기간이 시간 초과되기 전에 많은 라운드의 연결 시도가 수행될 수 있습니다. 장애 조치 중에 연결 시도를 빨리 연속하여 파트너를 오버로드하지 않도록 방지하기 위해 데이터 액세스 공급자는 각 다시 시도 주기 후에 짧은 다시 시도 지연을 추가합니다. 지정된 다시 시도 지연의 길이는 다시 시도 지연 알고리즘에 의해 결정됩니다. 첫 번째 라운드 후의 지연은 100밀리초입니다. 다음 세 라운드 후에는 다시 시도 지연이 각각 두 배씩 증가하여 200, 400, 800이 됩니다. 이후의 모든 라운드에서 다시 시도 지연은 연결 시도가 성공하거나 시간이 초과될 때까지 1초입니다.
[!참고] 서버 인스턴스가 중지되면 연결 요청이 즉시 실패합니다.
다음 그림에서는 파트너가 서로 역할을 전환하는 수동 장애 조치 중에 다시 시도 지연이 연결 시도에 미치는 영향을 보여 줍니다. 로그인 제한 시간은 15초입니다.
참고 항목
개념
데이터베이스 미러링 개요
데이터베이스 미러링 중에 발생 가능한 오류
데이터베이스 미러링 세션에 대한 초기 연결 설정
데이터베이스 미러링 세션에 다시 연결