성능 고려 사항
콘텐츠의 테이블 축소
콘텐츠의 테이블 확장

성능 고려 사항

모든 Service Bus for Windows Server 메시징 엔터티(큐, 토픽, 구독)는 컨테이너에 저장됩니다. 각 컨테이너는 실제로 엔터티와 엔터티의 모든 메시지를 저장하는 하나의 데이터베이스에만 연결됩니다. 데이터베이스는 하나의 컨테이너와 작용할 수 있습니다. 즉, 새 컨테이너가 만들어지면 새 데이터베이스도 만들어집니다. 큐 또는 토픽이 만들어지면 Service Bus for Windows Server에서 해당 엔터티를 컨테이너에 할당합니다. 모든 메시지는 이 컨테이너의 데이터베이스에 저장됩니다. 모든 토픽 구독은 토픽과 같은 컨테이너에 저장됩니다.

Service Bus for Windows Server 팜은 하나 또는 세 개의 노드로 구성됩니다. 각 노드에서는 Service Bus for Windows Server 게이트웨이 서비스와 Service Bus for Windows Server 브로커 서비스를 실행합니다. 각 컨테이너는 브로커 중 하나에 의해 로드됩니다. Service Bus for Windows Server에서는 사용 가능한 모든 브로커 간에 가능한 한 균등하게 컨테이너를 배포합니다. 따라서 브로커가 실패한 경우 해당 브로커에 의해 로드된 모든 컨테이너가 나머지 브로커로 이동합니다. 특정 엔터티와 관련된 모든 작업은 해당 엔터티가 포함된 컨테이너를 로드한 브로커에 의해 처리됩니다. Service Bus for Windows Server에 대한 자세한 내용은 다음을 참조하십시오. 아키텍처 개요를 참조하십시오.

성능 지침

이 섹션에서는 처리량을 향상시킬 수 있는 성능 최적화에 대해 설명합니다.

하드웨어 고려 사항

Service Bus for Windows Server 팜의 전체 처리량은 다음 세 가지 요소에 의해 제한됩니다.

  1. 팜 노드의 컴퓨팅 성능

  2. SQL Server 컴퓨터의 컴퓨팅 성능 및 하드 디스크 구성

  3. 팜 노드와 SQL Server 컴퓨터 간의 네트워크 연결 대역폭

Tip
높은 처리량을 실현하려면 팜 노드 중 하나가 아니라 SQL Server 데이터베이스에 전용 컴퓨터를 사용합니다.

많은 수의 큐와 토픽을 계획하는 경우 여러 메시지 컨테이너가 여러 SQL Server에서 실행되는 경우를 예상해야 합니다. Service Bus for Windows Server는 메시지 컨테이너(데이터베이스)를 팜 노드에 동적으로 할당하지만, Service Bus for Windows Server 큐 및 토픽(해당 메시지 포함)은 엔터티를 만들 때 데이터베이스에 배치됩니다.

Tip
최적의 처리량을 위해서는 적어도 팜에 있는 노드 수 만큼의 컨테이너를 사용합니다.

Tip
큐 및 토픽이 많은 경우 팜 노드보다 세 배 많은 메시지 컨테이너를 계획합니다. 예를 들어 팜에 3개의 노드가 있는 경우 9개의 메시지 컨테이너를 만듭니다.

Tip
Service Bus for Windows Server 큐 및 토픽을 만들기 전에 메시지 컨테이너를 만듭니다.

SQL Server 최적화

대부분의 메시징 시나리오에서 성능은 SQL Server I/O에 의해 결정됩니다. 따라서 Service Bus for Windows Server 컨테이너 데이터베이스를 호스팅하는 SQL Server를 조정할 때 다음 사항을 고려해야 합니다.

  • 로그와 데이터가 서로 다른 디스크에 저장되도록 SQL Server를 구성합니다.

  • 쓰기 성능을 고려하여 SQL Server 하드 디스크를 최적화합니다. 서버의 메모리가 충분한 경우 SQL Server는 디스크에서 데이터를 거의 읽지 않습니다. 서버에 세 개 이상의 디스크가 있는 경우 로그 및 데이터 저장소가 포함된 디스크를 스트라이프하십시오.

  • 로그 및 데이터 파일의 공간을 미리 할당하고 자동 증가를 사용하지 않도록 설정합니다.

  • 각 프로세서 코어에 하나의 TempDB 데이터 파일이 유지되도록 SQL Server를 구성합니다.

  • NTFS 할당 단위 크기를 64KB로 변경합니다.

리디렉션 사용

기본적으로 클라이언트는 Service Bus for Windows Server 게이트웨이 중 하나로 요청을 보냅니다. 게이트웨이는 해당 엔터티가 포함된 컨테이너를 로드한 브로커로 이 요청을 전달합니다. 리디렉션 기능을 사용하면 클라이언트에서 Service Bus for Windows Server 게이트웨이로 리디렉션 요청을 보냅니다. 그러면 게이트웨이에서 브로커의 주소로 응답합니다. 클라이언트는 모든 요청을 브로커로 직접 보냅니다. 리디렉션 기능을 사용하려면 팩터리의 EnableRedirect 속성을 true로 설정합니다. 예를 들면 다음과 같습니다.

MessagingFactorySettings factorySettings = new MessagingFactorySettings();
factorySettings.NetMessagingTransportSettings.EnableRedirect = true;
MessagingFactory factory = MessagingFactory.Create("address", factorySettings);

리디렉션 메커니즘은 TCP를 통해 전송되는 요청에만 사용할 수 있습니다. HTTP 요청은 항상 게이트웨이를 통과합니다. 또한 리디렉션 기능은 일부 부하 분산 장치와 호환되지 않습니다.

내부 캐시 크기 증가

캐시 크기를 늘리면 Service Bus for Windows Server 브로커 프로세스에서 더 많은 데이터를 메모리에 저장할 수 있습니다. 예를 들어 기본 캐시 크기를 500MB에서 1GB로 늘리려면 Service Bus for Windows Server 팜 노드 중 하나에서 다음 PowerShell cmdlet을 실행합니다.

Set-SBRuntimeSetting  -Name messagecachesizeperentity -Value 1048576000
Stop-SBFarm
Start-SBFarm

메시지 순서 지정 사용 안 함

토픽에 전송된 메시지는 모든 구독으로 이동되어야 합니다. Service Bus for Windows Server에서 메시지를 순서에 관계없이 구독으로 이동할 수 있다면 이 프로세스가 더욱 빠르게 실행될 수 있습니다. 메시지 순서 지정을 사용하지 않을 경우 세 가지 중 한 가지 요소의 성능이 향상되는 것으로 확인되었습니다.

항목에 대한 메시지 순서 지정을 사용하지 않도록 설정하려면 TopicDescription 클래스의 SupportOrdering 속성을 false로 설정합니다. 예를 들면 다음과 같습니다.

TopicDescription topicDescription = new TopicDescription(topicName)
{
    SupportOrdering = False
};
namespaceManager.CreateTopic(topicDescription);

시나리오

이 단원에서는 여러 주요 시나리오에서 더 나은 성능을 실현하는 방법에 대한 권장 사항을 설명합니다. 정확한 처리량 수치는 시나리오 및 사용된 특정 기능에 따라 크게 다를 수 있습니다.

처리량이 높은 단일(또는 소수) 엔터티 최적화

단일 큐 또는 토픽은 단일 데이터베이스를 기반으로 하는 단일 컨테이너에 저장되며 단일 브로커에 의해 처리됩니다. TCP 프로토콜을 사용하는 경우에는 팜 노드 중 하나만 활성화됩니다. 팜의 다른 노드는 노드 오류 시 팜을 복구할 수 있는 백업 노드로 사용됩니다. Get-WFServiceVersionAdd-SBHost

벤치마크에 따르면 다음과 같은 결과가 나타났습니다.

 

  메시지 처리량 작업 수(보내기 + 받기)

단일 큐

20,000개 메시지/초

40,000개 메시지/초

1개의 구독이 있는 단일 토픽

14,200개 메시지/초

28,400개 메시지/초

1000개의 구독이 있는 단일 토픽

26개 메시지/초

26,000개 메시지/초

벤치마크는 세 개의 노드가 있는 팜과 전용 SQL Server 노드를 사용하여 수행되었습니다. 메시지 동시 보내기 및 받기 크기는 1KB로 측정되었습니다. 모든 노드에는 4개의 쿼드 코어 CPU(2.3GHz), 24GB RAM 및 1GBit/s 이더넷이 탑재되었습니다.

처리량이 높은 여러 엔터티 최적화

세 개의 노드가 있는 팜에는 적어도 세 개의 컨테이너가 있어야 합니다. 이상적으로는 팜 노드 중 하나가 실패한 경우 팜 노드가 균등하게 로드되도록 9개 이상의 컨테이너가 필요합니다.

테스트 시스템에서는 1500개의 큐를 처리할 수 있었으며, 각 큐의 메시지 처리량(보내기 + 받기)은 초당 메시지 1개였습니다.

참고 항목


빌드 날짜:

2013-07-25

커뮤니티 추가 항목

추가
표시:
© 2016 Microsoft