2011-01-06 6 views
2

Service Broker를 적절히 사용하고 최대 성능을 발휘하는지 여부를 확인하려고합니다. 우리는 SB 대화 및 처리를 조정하여 3000/분에서 8000/분으로 갔지만 CPU는 100 %로 일정하게 유지되었습니다. 또한 SB 대기열은 며칠 동안 비어 있지만 유사한 트래픽 일에 대기열은 500k까지 백업 할 수 있습니다.SQL Server Service Broker : 오버 헤드 또는 최대 성능을 확인하는 방법?

기계는 쿼드 쿼드 (16 코어), HT, 32GB RAM 및 AWB를 사용할 수있는 SQL Server에 할당 된 26GB입니다.

SQL Server 2008 SP1 (CUs 없음), Enterprise Edition. Windows NT 6.1 (빌드 7600 :)에서 Microsoft Corporation Enterprise Edition (64 비트)

(영문) Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) 2009 년 3 월 29 일 10:11:52

메시지는 서비스 브로커 큐에 삽입됩니다. 서비스 대기열 큐는 메시지 그룹을 가져 와서 XML을 구문 분석하고 (단순한 구문 분석이 아닌) 테이블에 삽입하는 CLR을 통해 메시지 그룹을 실행합니다. CLR은 T-SQL 코드보다 상당히 빠릅니다.

우리는 스케줄러

우리는 야간 통계/인덱스 유지 관리를 실행 당 35 개 실행 가능한 작업의 평균 있습니다.

성능을 높이기 위해 서버 MAXDOP = 1을 설정했습니다.

우리는 TEAMDB 파일 수를 64로 늘려서 SGAM 경합을 피했습니다. TF1118과 결합하면 TEMPDB 경합이 중지 된 것 같습니다.

sys.dm_os_waiting_tasks를 보면 일반적으로 ~ 60 개의 태스크가 THREADPOOL에서 대기하고 있으며 다른 유형은 소수에 불과합니다.

신호 대기 시간은 70 % (리소스 대기 = 30 %)입니다.

TokenAndUserPermCache가 20MB 미만인 것으로 확인되었습니다.

sys.dm_os_latch_stats를 보면 40 분의 1 분 안에 BUFFER 래치가 표시되는데, 대부분 sysdesend에 있으며 우리는 Dialogs를 처리하는 데 사용하는 사용자 테이블에 있습니다.

CPU 압력을 나타내는 SOS_SCHEDULER_WAIT도 높습니다. 그러나 CLR이 너무 바쁘거나 Service Broker 오버 헤드로 인해 발생 했습니까? 기꺼이 코드를 제공하겠습니다. 여기에 게시 할 내용을 알려주십시오.

미리 감사드립니다.

+0

이것을 serverfault.com에 다시 게시하는 것이 좋습니다. 관리자 용 사이트입니다. 여전히 여기에 답을 얻을 수 있지만 StackOverflow는 일반적으로 (SQL 쿼리와 같은) 코딩 측면에서 더욱 중요합니다. – JNK

답변

2
  1. SSB는 로컬 대기열 처리 메커니즘으로 만 사용합니까, 아니면 원격 메시지 전달 (x-machine 전송)이 포함되어 있습니까?
  2. 얼마나 많은 대기열이 필요합니까?
  3. 활성화가 관련되어 있습니까? 그렇습니다. 얼마나 많은 max_queue_readers가 있습니까?
  4. 500k 스파이크로 조롱 할 수있는 것은 무엇입니까? 그들이 물기를 빼내는 데 얼마나 걸리나요? 어둠 속에서

일부 샷 :

~ 60 개의 작업이 16 개의 CPU 머신에서 작업자를 기다리고 있습니다 ... 정상적으로는 좋다고 생각하지만 일반적으로 SSB 처리 전용 머신은 조금 이상합니다. 활성화 된 작업)이 많아서 THREADPOOL 대기를 표시하지 않는 경향이 있습니다.

+0

안녕하세요! 아이디어를 얻기 위해 블로그를 읽었지만 "대용량 대기열 다루기"를 보지 못했습니다. (형식에 대한 사과) 귀하의 질문에 대답하십시오 : 1) 지역에만 해당. 우리는 MSMQ를 먹이고 있습니다. 2) 2 개의 큐, 나는 믿는다. 3) 확실하지 않은지 확인합니다. 4) 스파이크가 아니라 점진적으로 올라간다. 그것을 어떤 것과도 연결할 수 없습니다. 트래픽이 감소하면 최대 10k/분을 처리 할 수 ​​있으므로 SB 대기열은 1 시간 내에 지울 수 있습니다. 구현하는 방법을 알아 내려고 150 트릭을 인식합니다 (사용하지는 않습니다). 고스트를 최대 500k/s까지 줄였습니다. (다른 응답에서 더 많이) – mbourgon

+0

처리를 위해 대기열에서 가져온 "배치"의 크기를 100에서 1000으로 늘 렸습니다. 실제로 성능이 크게 향상 된 것으로 보입니다. 우리는 sysdesend가 최고의 위선자 중 하나임을 확인했습니다. – mbourgon

+0

평균 메시지 본문 크기는 얼마나됩니까? –

관련 문제