2014-11-06 6 views
1

서비스 브로커를 사용하여 저장 프로 시저를 확장했습니다. 동시에 10,100,500 번씩 원활하게 실행됩니다.서비스 브로커가 처음에 시간이 걸립니다.

그러나 제가 직면 한 하나의 작은 문제가 있습니다. 다음은 세부 사항입니다.

스케일 아웃하는 저장 프로 시저가 10 초 동안 실행됩니다.

10 개의 대기열을 사용하여 10 개를 실행할 때 평균 실행 시간은 10 초입니다. 모든 수단이 동시에 실행됩니다.

하지만 100 개의 큐를 100 번 실행합니다. 나는 비슷한 결과를 볼 수 없다. 예, 나는 그들 모두가 동시에 달릴 것을 기대하지 않습니다. 그러나 최소한 첫 번째 실행은 10 초까지 완료되어야하며 나머지는 리소스가있을 때 실행해야합니다. 여기에는 100 분의 사형수가 4 분이 걸리고 첫 번째 완료는 2 분 후에 발생합니다 (문자 그대로). 나머지는 2 분 안에 완료됩니다.

내 CPU 코어는 6이고 정품 인증 (Max_Queue_Readers) 6,12,48으로 시도했으며 모두 동일한 결과를 보았습니다.

또 다른 한가지는 실제 sp 실행과 함께 10 초 동안 기다리는 것과 함께이 작업을 실행하면 40 초 안에 1000 개의 요청처럼 매우 빠르게 실행됩니다.

위와 같이 서비스 브로커가 처음에 첫 번째 실행을 완료하기 위해 기다리고 있다는 점을 알고 싶습니다. 첫 번째 아이디어를 완성하는 데 2 ​​분이 걸리는 이유를 의미합니까?

이 모든 숫자는 시간을 기록하는 임시 로그 테이블을 사용하여 추적합니다.

+0

서비스 브로커는 마법 같은 것이 아닙니다. 스토어드 프로 시저의 다양한 호출 사이에 경합이있는 경우 서비스 브로커를 사용하지 않아도됩니다. 내 충고는 다른 저장된 프로 시저 성능 문제와 마찬가지로이 문제를 해결하는 것입니다. procs가 기다리고있는 것을 살펴보고이를 정리할 수 있는지 확인하십시오. –

+0

또한, 얼마나 오래 걸릴까요? 서비스 브로커는 비동기식 기술입니다. "화재와 잊기"를 의미합니다. 결국 메시지가 처리됩니다. –

답변

1

이 램프는 0에서 Max_Queue_Readers까지 상승합니다. Service Broker는 즉시 6 개의 대기열 판독기를 활성화하지 않고 하나를 활성화 한 다음 5 초 내에 다른 하나를 활성화 한 다음 5 초 내에 다른 하나를 차례로 활성화합니다. 이 아이디어는 Service Broker가 작업 부하를 따라 잡는 데 필요한만큼 활성화 된 절차를 시작하는 것이지만 그 이상은 아닙니다. 스파이크가 납작 해집니다.

Understanding Queue Monitors에 대한 자세한 내용을 읽어보십시오.