메시징 엔진이 데이터 저장소를 사용하도록 구성되었지만
해당 데이터 저장소에 연결할 수 없는 경우(예를 들어, 데이터 저장소를 포함하는
데이터베이스가 실행 중이 아니므로) 메시징 엔진은 시작되지
않습니다. 메시징 엔진 시작 확률을 높이도록 시스템을 조정할 수 있습니다.
이 태스크 정보
단일 서버 환경에서 애플리케이션 서버를 시작할 때
메시징 엔진을 시작하려고 합니다. 15분 넘게 데이터베이스가
사용 불가능한 경우 메시징 보안은 중지됨 상태가 되며
수동으로 시작해야 할 수 있습니다.
고가용성 환경에서
메시징 엔진은 서버 또는 클러스터 시작의 일부로 또는 장애 복구 프로세스의
일부로 시작됩니다. 메시징 엔진 시작 중에 메시징 엔진은
기본적으로 최대 15분 동안 데이터 저장소에 연결하려고
시도합니다. 이 시간 동안 다음 명령문 중 하나가 true인 경우
메시징 엔진은 서버에서 시작될 수 없으며, 고가용성에 대해
서버를 사용할 수 없습니다.
- 데이터베이스가 사용 불가능하거나 실행 중이 아닙니다.
- 장애 복구 상황에서 데이터베이스는 원래 애플리케이션 서버에 대한
네트워크 연결 유실을 발견하지 못하므로 데이터 저장소에 대한 잠금을
해제하지 못합니다.
이 사용 안함 상태는 클러스터의 모든 멤버에 전파할 수 있습니다.
수동으로 서버가 고가용성 환경을 유지보수하도록 다시 설정해야 합니다.
데이터베이스 서버 또는 애플리케이션 서버에서 기본 제한시간 15분과
같은 다양한 매개변수를 구성하여 메시징 엔진의 시작 성공 확률을 높일 수 있습니다.
프로시저
- 데이터베이스 서버의 경우 애플리케이션 서버에서 네트워크 연결
유실을 발견하는 데 소요되는 시간을 최소화하도록
운영 체제를 구성하십시오. 자세한 내용은
운영 체제 문서를 참조하십시오. 예를 들어 다음 테이블에서는
Windows 및
AIX®
운영 체제에 대한 관련 매개변수를 나열합니다.
표 1. TCP/IP 매개변수. 테이블의
첫 번째 열에서는 Windows 운영 체제에서 TCP/IP 매개변수 목록을
제공합니다. 테이블의
두 번째 열에서는 AIX 운영 체제에서 TCP/IP 매개변수 목록을
제공합니다. 세 번째 열에서는 매개변수에 대한 설명을 제공합니다. Windows
운영 체제에서 매개변수 이름 |
AIX
운영 체제에서 매개변수 이름 |
설명 |
KeepAliveTime |
tcp_keepidle |
비활성 연결에서
keepalive
요청을 보내기 전 대기하는 시간(
Windows
운영 체제의 경우 밀리초, AIX
운영 체제의 경우 0.5초 단위). |
KeepAliveInterval |
tcp_keepintvl |
응답을 기다리는 시간(
Windows
운영 체제의 경우 밀리초, AIX
운영 체제의 경우 0.5초 단위). |
TCPMaxDataRetransmissions |
tcp_keepcnt |
연결을 끝내기 전에 보낼 요청 수. |
다음 공식을 사용하여 데이터베이스 서버가 애플리케이션 서버에 대한
연결 실패를 발견하는 데 소요되는 총 시간을 계산할 수 있습니다.
연결 실패 발견 시간 = 라이브 유지 시간 + (라이브 유지 간격 x 요청 수)
예를 들어
다음 테이블에 따라 매개변수가 설정된
Windows
시스템의 경우 데이터베이스 서버가 애플리케이션 서버에 대한 연결 실패를
발견하는 데 소요된 총 시간은 350초입니다. 표 2. 매개변수
값 예제. 첫 번째 열에서는 매개변수 이름을
제공합니다. 두 번째 열에서는 매개변수에 대한 샘플 값을 제공합니다. 매개변수 |
값 |
KeepAlive |
300000밀리초 |
KeepAliveInterval |
10000 밀리초 |
TCPMaxDataRetransmissions |
5 |
데이터베이스 제품에는 사용자가 구성 가능한
관련 매개변수(예: z/OS®용
DB2®의 경우
IDLE THREAD TIMEOUT 매개변수)가 포함될 수 있습니다. 데이터베이스
서버가 애플리케이션 서버에 대한 연결 유실을 발견하면
데이터베이스는 데이터 저장소에 대한 잠금을 해제합니다. 이제
메시징 엔진은 데이터 저장소에 액세스할 수 있으므로, 시작도 가능합니다.
- 애플리케이션 서버에서 데이터 저장소가 사용 가능해지는 데
적합한 시간을 기다리도록 메시징 엔진을 조정하십시오. 기본적으로
메시징 엔진은 15분 동안 2초마다 데이터 저장소에 연결하려고 합니다. 이
타이밍을 조정하려는 경우 이 단계의 나머지를 완료하십시오.
- 을
클릭하여 메시징 엔진에 대한 사용자 정의 특성 패널로 이동하십시오.
- 새로 작성을 클릭하십시오.
- 이름 필드에
sib.msgstore.jdbcInitialDatasourceWaitTimeout을
입력하고 값 필드에 적절한 값을 입력하십시오. 이 특성은
데이터 저장소가 사용 가능해질 때까지 기다리는 시간(밀리초)입니다. 기본값은
900000(15분)입니다. 이
시간은 데이터베이스에 대한 연결을 설정하고 필수 테이블
잠금을 확보하는 데 필요한 시간을 포함합니다.
이 특성 값은 1단계에서 구성된,
데이터베이스 서버가 네트워크 연결 유실을 발견하는 데 소요된 총 시간보다
커야 합니다.
- 확인을 클릭하십시오.
- 새로 작성을 클릭하십시오.
- 이름 필드에
sib.msgstore.jdbcStaleConnectionRetryDelay를
입력하고 값 필드에 적절한 값을 입력하십시오. 이 특성은
데이터 저장소에 연결하려는 시도 간 대기 시간(밀리초)입니다.
기본값은 2000(2초)입니다. 예를 들어, sib.msgstore.jdbcInitialDatasourceWaitTimeout 특성을
600000으로 설정하고 sib.msgstore.jdbcStaleConnectionRetryDelay 특성을
3000으로 설정하면 메시징 엔진은
10분 동안 3초마다 연결을 시도합니다.
- 확인을 클릭하십시오.
- 마스터 구성에 변경사항을 저장하십시오.
- 애플리케이션 서버를 다시 시작하십시오.
- 클러스터가 있는 경우 이전 단계를 반복하여
클러스터의 모든 메시징 엔진에서 이 특성을 추가하십시오.
결과
이 매개변수와 사용자 정의 특성을 구성하면
데이터베이스 서버가 네트워크 연결 유실을 발견하는 데 소요되는 시간을
최소화하고 메시징 엔진이 시작하기 전에 데이터베이스 연결을 복구하기 전까지
적절한 시간 동안 기다릴 수 있습니다.
다음에 수행할 작업
데이터베이스 연결 실패 시 메시징 엔진 및 서버를
다시 시작하도록 구성할 수 있습니다. 이 동작은
데이터베이스 연결이 복원된 경우 메시징 엔진이 불일치 상태가 되는
위험을 줄입니다.