다음을 통해 공유


BizTalk Server의 호스트 조정 구현 방법

BizTalk Server 호스트 제한 메커니즘은 제한 조건을 지속적으로 모니터링하고, 제한 조건의 심각도를 계산하며, 계산된 심각도에 따라 호스트 제한을 점진적으로 적용합니다. 제한 메커니즘은 자체 튜닝이며 기본 구성 옵션은 대부분의 BizTalk Server 처리 시나리오에 적합합니다. BizTalk Server 호스트 제한은 특정 시나리오에 대한 제한을 조정하는 데 사용할 수 있는 몇 가지 구성 가능한 옵션을 노출합니다. 이러한 구성 옵션을 변경하는 방법에 대한 자세한 내용은 호스트 설정을 수정하는 방법을 참조하세요.

호스트 조정 알고리즘의 구성 요소

BizTalk Server 호스트 제한을 적용할 때 다음 알고리즘을 사용합니다.

  1. 특정 임계값을 초과하는지 확인하기 위해 지속적으로 다음 매개 변수를 모니터링합니다. 매개 변수 값이 매개 변수에 대한 임계값을 초과하는 경우 조정 상태가 발생합니다.

    • 사용 중인 메모리 양(시스템 차원 및 호스트 프로세스 메모리 모두에서)

    • 배달되거나 처리 중인 메시지 수(아웃바운드 조정에 대한 임계값)

    • 사용 중인 스레드 수

    • 데이터베이스 크기(모든 호스트의 큐 테이블에 있는 항목 수와 Spool 및 Tracking 테이블에 있는 항목 수로 측정)

    • 동시 데이터베이스 연결 수

    • 메시지 게시(인바운드) 속도 및 배달/처리(아웃바운드) 속도

  2. 조정 상태의 심각도를 결정합니다. 조정 상태의 심각도 순위는 가장 심각한 상태에서 가장 덜 심각한 상태 순으로 다음과 같이 지정됩니다.

    • 사용 중인 호스트 프로세스 메모리가 임계값을 초과합니다.

    • 처리 중인 메시지 수가 임계값을 초과합니다.

    • 사용 중인 스레드 수가 임계값을 초과합니다.

    • 데이터베이스 크기가 임계값을 초과합니다.

    • 다른 모든 조정 상태

  3. 조정 상태의 심각도에 따라 조정을 점진적으로 적용합니다. 심각도가 증가함에 따라 조정이 보다 적극적으로 적용됩니다. 점진적 조정은 다음과 같이 수행됩니다.

    • 하나 이상의 조정 상태가 검색되어 심각도가 할당됩니다.

    • 가장 심각도가 높은 상태에 해당하는 조정 구현 지침이 수행됩니다. 상태가 지속되는 경우 조정 상태에 따라 다양한 스레드 풀의 크기가 줄어들 수 있으며 실행 중인 오케스트레이션이 디하이드레이션되어 메모리가 늘어날 수 있습니다.

    • 메시지가 인바운드인지, 아니면 아웃바운드인지에 따라 메시지 게시 또는 처리 작업에 지연이 적용됩니다. 지연 기간은 조정 상태의 심각도에 비례하므로 심각도가 높은 조정 상태의 조정 기간은 심각도가 낮은 조정 상태의 조정 기간보다 깁니다. 이러한 지연 기간은 상태가 변경됨에 따라 조정 메커니즘에 의해 특정 범위 내에서 길이가 조정됩니다. 현재 지연 기간은 BizTalk:Message Agent 성능 개체 범주와 연결된 메시지 배달 지연(ms)메시지 게시 지연(ms) 성능 카운터를 통해 노출됩니다. 이러한 성능 개체 카운터는 호스트 제한 성능 카운터 항목에 설명되어 있습니다.

    • 조정 메커니즘은 조정 상태가 있는지 계속 확인합니다. 조정 상태가 완화되면 조정된 메시지가 차단 해제되고 스레드 풀 및 다른 리소스가 무제한 모드에서 작동할 수 있게 됩니다. 시스템이 조정 상태 없이 계속 작동되면 지연 기간이 상당히 줄어듭니다. 조정 상태가 지속되면 상태 심각도에 비례하여 지연 정도가 증가하고 후속 메시지의 지연 기간이 더 늘어납니다.

    • 지연 기간이 경과하면 조정은 더 이상 구현되지 않습니다.

조정 상태 유형

제한 조건에는 속도 기반, 리소스 기반 및 오케스트레이션의 세 가지 기본 유형이 있습니다.

  1. 속도 기반 제한 은 두 가지 범주로 나뉩니다. 인바운드(게시됨) 및 아웃바운드(배달):

    • 인바운드(게시된) 메시지의 경우 BizTalk Server 호스트 instance 메시지 게시 수신률이 지정된 속도 오버드라이브 비율(백분율) 값을 초과하는 경우 메시지 게시를 제한합니다. 속도 오버드라이브 비율(백분율) 매개 변수는 메시지 게시 제한 설정 대화 상자에서 구성할 수 있습니다. 인바운드 메시지에 대한 속도 기반 조정은 기본적으로 MessageBox 데이터베이스에 메시지 일괄 처리를 게시하기 전에 지연을 발생시켜 수행됩니다. 인바운드 메시지에 대한 속도 기반 조정을 위해 수행되는 다른 작업은 없습니다.

    • 아웃바운드(배달) 메시지의 경우 BizTalk Server 호스트 instance 메시지 배달 수신 속도가 메시지 배달 발신 속도 * 지정된 속도 오버드라이브 비율(백분율) 값을 초과하는 경우 메시지 배달을 제한합니다. 속도 오버드라이브 비율(백분율) 매개 변수는 메시지 처리 제한 설정 대화 상자에서 구성할 수 있습니다. 아웃바운드 메시지에 대한 속도 기반 조정은 기본적으로 메모리 내 큐에서 메시지를 제거하고 처리를 위해 EPM(종단점 관리자)이나 오케스트레이션 엔진으로 해당 메시지를 배달하기 전에 지연을 발생시켜 수행됩니다. 아웃바운드 메시지에 대한 속도 기반 조정을 위해 수행되는 다른 작업은 없습니다.

      속도 오버드라이브 요소 및 기타 속도 기반 제한 값에 대한 자세한 내용은 속도 기반 제한 설정을 수정하는 방법을 참조하세요.

  2. 리소스 기반 제한은 스레드, 메모리 및 데이터베이스 크기와 같은 시스템 리소스를 모니터링하고 모든 서비스 클래스에 적용할 수 있습니다. 리소스 기반 제한 값에 대한 자세한 내용은 리소스 기반 제한 설정을 수정하는 방법을 참조하세요.

  3. 오케스트레이션 제한은 탈수 및 구독 일시 중지/다시 시작 시기를 방지할 수 있습니다. 오케스트레이션 제한 값에 대한 자세한 내용은 오케스트레이션 제한 설정을 수정하는 방법을 참조하세요.

조정 상태 트리거, 작업 및 완화 전략

이 섹션에서는 다양한 조정 상태에 대한 트리거, 조정 메커니즘의 결과 작업 및 조정 상태를 완화시키기 위해 사용할 수 있는 기술에 대해 설명합니다.

인바운드 조정

BizTalk 조정 메커니즘은 인바운드 조정을 오케스트레이션 엔진(XLANG) 및 인바운드 어댑터에 적용합니다.

메시지 게시 제한 상태BizTalk:MessageAgent 성능 개체 범주와 연결된 메시지 게시 제한 상태 기간 카운터를 사용하여 현재 제한 상태 및 제한 기간을 측정합니다. 사용 가능한 호스트 제한 성능 카운터에 대한 자세한 내용은 호스트 제한 성능 카운터를 참조하세요.

인바운드 조정으로 인해 인바운드 메시지가 소스에서 백로그로 처리될 수 있습니다. 인바운드 조정이 수신 어댑터에 적용되면 조정 상태가 완화될 때까지 수신 어댑터에서 메시지를 수신하지 않을 수 있습니다.

메시지 게시

조정 상태
조정 상태에 대한 트리거 수행된 조정 작업 완화 전략 성능 개체 성능 카운터
2 호스트 instance 대한 메시지 게시 수신률이 지정된 속도 오버드라이브 비율(백분율) 값인 메시지 게시 발신 속도\*를 초과합니다. 데이터베이스가 게시 속도를 따라갈 수 없습니다. 메시지 게시 들어오는 속도가 메시지 게시 나가는 속도 * 지정된 속도 오버드라이브 비율(백분율) 값과 동등할 때까지 동적으로 계산된 기간 동안 게시 스레드를 차단합니다. 성능 카운터를 사용하여 메시지 게시 수신율 및 메시지 게시 송신율을 결정합니다. 이때 환경에 적합한 가속을 고려합니다.

샘플링 기간최소 샘플 매개 변수 수에 제공된 값이 시나리오에 적합한지 확인합니다.

이러한 매개 변수에 대한 자세한 내용은 속도 기반 제한 설정을 수정하는 방법을 참조하세요.
BizTalk:Message Agent Message publishing incoming rate

메시지 게시 송신율
4 프로세스 메모리가 지정된 임계값을 초과합니다.

이는 게시될 일괄 처리에 과도한 메모리가 필요하거나 너무 많은 스레드가 메시지를 처리하는 경우 발생할 수 있습니다.
EPM에서 사용하는 스레드 풀의 크기를 줄입니다.

새 메시지 일괄 처리가 처리되지 않도록 EPM 스레드를 차단합니다.

데이터베이스에 일괄 처리 메시지를 저장하는 데 과도한 메모리가 필요한 경우 데이터베이스에 메시지가 저장되기 전 게시 스레드도 점진적으로 지연될 수 있습니다.

프로세스 메모리 부족으로 인한 게시 일괄 처리의 차단 여부는 일괄 처리에 포함된 메시지 수를 비롯한 여러 가지 요소에 의해 달라지거나 일괄 처리에 디하이드레이션 또는 메시지 삭제 명령이 있는지 여부에 따라 달라집니다.
EPM 스레드 풀 및/또는 어댑터 일괄 처리 크기를 줄여 로드량을 줄입니다.

프로세스가 과도한 메모리를 사용하지 않는 경우 호스트에 대한 프로세스 가상 임계값을 늘리는 것이 좋습니다.

프로세스 가상 값 변경에 대한 자세한 내용은 리소스 기반 제한 설정을 수정하는 방법을 참조하세요.
BizTalk:Message Agent High process memory

Process memory usage (MB)

Process memory usage threshold (MB)
6 호스트 메시지 큐 크기, Spool 테이블 크기 또는 Tracking 테이블 크기가 지정된 임계값을 초과합니다.

이 상태가 발생하는 원인은 다음과 같습니다.

- BizTalk Server BizTalk Server 데이터베이스가 실행되지 않거나 느리게 실행되고 있는 것을 유지하기 위해 사용하는 SQL 에이전트 작업입니다.
- 다운스트림 구성 요소는 적시에 메모리 내 큐의 메시지를 처리하지 않습니다.
- 일시 중단된 메시지 수가 높습니다.
- 시스템의 지속 가능한 최대 부하에 도달했습니다.
EPM에서 사용하는 스레드 풀의 크기를 줄입니다.

새 메시지 일괄 처리가 처리되지 않도록 EPM 스레드를 차단합니다.

데이터베이스에 메시지가 저장되기 전 게시 스레드도 점진적으로 지연될 수 있습니다.
BizTalk Server 데이터베이스를 유지 관리하기 위해 BizTalk Server에서 사용하는 SQL 에이전트 작업이 실패 없이 실행되고 있어야 합니다.

필요에 따라 일시 중단된 인스턴스를 종료하고 다시 시작합니다.

BizTalk 데이터베이스를 보관하는 SQL Server의 공간 요구 사항을 고려하여 DB 임계값의 메시지 수 에 대한 기본값을 늘입니다.

데이터베이스 크기를 적절하게 조정하여 추가 메시지 백로그를 처리하는 경우 스풀 및 추적 테이블에서 추가 백로그를 허용하도록 Spool 승수추적 데이터 승수 값을 늘리는 것이 좋습니다.

값 변경에 대한 자세한 내용은 리소스 기반 제한 설정을 수정하는 방법을 참조하세요.
BizTalk:Message Agent

BizTalk:Message Box:General Counters

BizTalk:Message Box:Host Counters
MessageAgent/Database size

Message Box:General Counters/Spool size

Message Box:General Counters/Tracking data size

Message Box:Host Counters/Host queue – length

Message Box:Host Counters/Host queue - suspended msgs – length
8 호스트 인스턴스에서 사용 중인 데이터베이스 세션이 지정된 임계값을 초과합니다. EPM에서 사용하는 스레드 풀의 크기를 줄입니다.

새 메시지 일괄 처리가 처리되지 않도록 EPM 스레드를 차단합니다.

데이터베이스에 메시지가 저장되기 전 게시 스레드도 점진적으로 지연될 수 있습니다.
호스트에 대한 데이터베이스 연결 임계값을 늘리는 것이 좋습니다.

이 값을 변경하는 방법에 대한 자세한 내용은 리소스 기반 제한 설정을 수정하는 방법을 참조하세요.
BizTalk:Message Agent Database session
9 프로세스 스레드 수가 지정된 임계값을 초과합니다. EPM에서 사용하는 스레드 풀의 크기를 줄입니다.

새 메시지 일괄 처리가 처리되지 않도록 EPM 스레드를 차단합니다.

데이터베이스에 메시지가 저장되기 전 게시 스레드도 점진적으로 지연될 수 있습니다.
시스템에서 너무 많은 스레드를 만들지 않도록 다른 스레드 풀 크기를 조정합니다.

스레드 풀 크기를 수정하는 방법에 대한 자세한 내용은 일반 설정을 수정하는 방법리소스 기반 제한 설정을 수정하는 방법을 참조하세요.
BizTalk:Message Agent 스레드 수

스레드 수 임계값
5 시스템 메모리가 지정된 임계값을 초과합니다. EPM에서 사용하는 스레드 풀의 크기를 줄입니다.

새 메시지 일괄 처리가 처리되지 않도록 EPM 스레드를 차단합니다.

데이터베이스에 일괄 처리 메시지를 저장하는 데 과도한 메모리가 필요한 경우 데이터베이스에 메시지가 저장되기 전 게시 스레드도 점진적으로 지연될 수 있습니다.

프로세스 메모리 부족으로 인한 게시 일괄 처리의 차단 여부는 일괄 처리에 포함된 메시지 수를 비롯한 여러 가지 요소에 의해 달라지거나 일괄 처리에 디하이드레이션 또는 메시지 삭제 명령이 있는지 여부에 따라 달라집니다.
EPM 스레드 풀의 기본 크기 및/또는 어댑터 일괄 처리 크기를 줄여 로드를 줄입니다.

프로세스가 과도한 메모리를 사용하지 않는 경우 호스트에 대한 전역 물리적 임계값을 늘리는 것이 좋습니다.

전역 물리적 임계값 변경에 대한 자세한 내용은 리소스 기반 제한 설정을 수정하는 방법을 참조하세요.
BizTalk:Message Agent Physical memory usage (MB)

Physical memory usage threshold (MB)

아웃바운드 조정

BizTalk 조정 메커니즘은 아웃바운드 조정을 오케스트레이션 엔진(XLANG) 및 아웃바운드 어댑터에 적용합니다.

메시지 배달 제한 상태BizTalk:MessageAgent 성능 개체 범주와 연결된 메시지 배달 제한 상태 기간 카운터를 사용하여 현재 제한 상태 및 제한 기간을 측정합니다. 사용 가능한 호스트 제한 성능 카운터에 대한 자세한 내용은 호스트 제한 성능 카운터를 참조하세요.

아웃바운드 조정으로 인해 메시지 배달이 지연될 수 있으며 메시지가 메모리 내 큐에 쌓여 조정 상태가 완화될 때까지 큐에서 나오는 스레드가 차단될 수 있습니다. 큐에서 나오는 스레드가 차단되면 아웃바운드 배달에 대해 추가 메시지가 MessageBox에서 메모리 내 큐로 이동되지 않습니다.

메시지 배달

조정 상태
조정 상태에 대한 트리거 수행된 조정 작업 완화 전략 성능 개체 성능 카운터
1 호스트 instance 대한 메시지 배달 수신 속도가 메시지 배달 발신 속도 \* 지정된 속도 오버드라이브 비율(백분율) 값을 초과합니다.

이는 처리의 복잡성, 느린 아웃바운드 어댑터 또는 시스템 리소스의 일시적인 부족으로 인해 발생할 수 있습니다.
메시지 배달 수신 속도가 메시지 배달 발신 속도 \* 지정된 속도 오버드라이브 비율(백분율) 값과 동등할 때까지 동적으로 계산된 기간 동안 배달 스레드를 차단합니다. 성능 카운터를 사용하여 메시지 배달 수신율 및 메시지 배달 송신율을 결정합니다. 이때 환경에 적합한 가속을 고려합니다.

샘플링 기간최소 샘플 매개 변수 수에 제공된 값이 시나리오에 적합한지 확인합니다.

이러한 매개 변수에 대한 자세한 내용은 속도 기반 제한 설정을 수정하는 방법을 참조하세요.
BizTalk:Message Agent Message delivery incoming rate

메시지 게시 송신율
4 프로세스 메모리가 지정된 임계값을 초과합니다.

이는 메모리를 많이 사용하는 시나리오, 즉 많은 메시지를 처리하거나 송신 어댑터에서 동시에 많은 메시지를 처리하려는 경우 발생할 수 있습니다.
어댑터나 XLANG으로의 메시지 배달 속도를 느리게 합니다.

해당되는 경우 서비스 인스턴스를 디하이드레이션하고 캐시를 축소하여 프로세스 메모리 소비를 줄입니다.

EPM 및/또는 메시지 에이전트에서 사용하는 스레드 풀의 크기를 줄입니다.

주기적으로 .NET GC(가비지 수집)를 수행합니다.
프로세스 메모리 기반 조정으로 인해 시스템이 유휴 상태가 되는 것이 아닌 경우 다른 작업을 수행할 필요가 없습니다.

In-process 메시지 수 카운터가 높고 프로세스 메모리 기반 제한이 있는 경우에도 CPU 사용률이 과도하지 않은 경우 추가 작업이 필요하지 않을 수 있습니다.

시스템이 과도하게 제한되는 것처럼 보이는 경우 호스트에 대한 프로세스 가상 임계값과 관련된 값을 늘리고 호스트 instance "메모리 부족" 오류를 생성하지 않는지 확인합니다. 프로세스 가상 임계값을 늘려 "메모리 부족" 오류가 발생하는 경우 내부 메시지 큐 크기In-Process 메시지 임계값의 값을 줄이는 것이 좋습니다. 이 전략은 대량 메시지 처리 시나리오에 특히 유용합니다.

이러한 매개 변수에 대한 자세한 내용은 리소스 기반 제한 설정을 수정하는 방법을 참조하세요.
BizTalk:Message Agent High process memory

프로세스 메모리 사용량(MB)

Process memory usage threshold (MB)

In-process message count

Active instance count
3 서비스 클래스로 배달된 처리 중인 메시지 수가 지정된 임계값을 초과합니다.

이는 처리의 복잡성, 느린 아웃바운드 어댑터 또는 시스템 리소스의 일시적인 부족으로 인해 발생할 수 있습니다.
어댑터나 XLANG으로의 메시지 배달 속도를 느리게 합니다.

메시지 에이전트에서 사용하는 스레드 풀의 크기를 줄입니다.
초과 제한이 발생하는 경우 In-process 메시지 임계값과 연결된 값을 늘리는 것이 좋습니다.

이 매개 변수에 대한 자세한 내용은 리소스 기반 제한 설정 수정 방법참고: 이 값을 늘리면 송신 어댑터 성능에 부정적인 영향을 미치거나 프로세스의 메모리 사용량이 증가할 수 있습니다.
BizTalk:Message Agent In-process message count

In-process message count threshold
9 프로세스 스레드 수가 지정된 임계값을 초과합니다. EPM 및/또는 메시지 에이전트에서 사용하는 스레드 풀의 크기를 줄입니다. 시스템에서 너무 많은 스레드를 만들지 않도록 다른 스레드 풀 크기를 조정합니다.

스레드 풀 크기를 수정하는 방법에 대한 자세한 내용은 일반 설정을 수정하는 방법리소스 기반 제한 설정을 수정하는 방법을 참조하세요.
BizTalk:Message Agent 스레드 수

스레드 수 임계값
5 시스템 메모리가 임계값을 초과합니다. 어댑터나 XLANG으로의 메시지 배달 속도를 느리게 합니다.

해당되는 경우 서비스 인스턴스를 디하이드레이션하고 캐시를 축소하여 프로세스 메모리 소비를 줄입니다.

EPM 및/또는 메시지 에이전트에서 사용하는 스레드 풀의 크기를 줄입니다.
EPM 스레드 풀의 기본 크기 및/또는 어댑터 일괄 처리 크기를 줄여 로드를 줄입니다.

프로세스가 과도한 메모리를 사용하지 않는 경우 호스트에 대한 전역 물리적 임계값을 늘리는 것이 좋습니다.

전역 물리적 임계값을 변경하는 방법에 대한 자세한 내용은 리소스 기반 제한 설정을 수정하는 방법을 참조하세요.
BizTalk:Message Agent Physical memory usage (MB)