WCF 서비스 조절이 추가 코드없이 요청을 대기열에 넣습니다. 이러한 내부 대기열을 모니터링하여 예를 들어 충전 수준을 알 수 있습니까?WCF 내부 대기열 모니터링 (서비스에 너무 많은 요청을 보내지 않기 위해)
내 목표는 클라이언트가 서비스에 많은 요청 (예 : 느린 서비스 또는 정체 된 서비스)을 보낼 수 없도록하기위한 것이므로 아직 보내지 않은 나가는 요청의 양을 모니터링 할 수 있다면 클라이언트 트래픽이 적을 수 있습니다.
WCF 서비스 조절이 추가 코드없이 요청을 대기열에 넣습니다. 이러한 내부 대기열을 모니터링하여 예를 들어 충전 수준을 알 수 있습니까?WCF 내부 대기열 모니터링 (서비스에 너무 많은 요청을 보내지 않기 위해)
내 목표는 클라이언트가 서비스에 많은 요청 (예 : 느린 서비스 또는 정체 된 서비스)을 보낼 수 없도록하기위한 것이므로 아직 보내지 않은 나가는 요청의 양을 모니터링 할 수 있다면 클라이언트 트래픽이 적을 수 있습니다.
당신이 찾고있는 것은 쓰로틀 알고리즘입니다. 일반적인 알고리즘은 마지막 N 개의 작업에 대한 평균 대기 시간을 측정하는 것입니다. 대기 시간이 비정상적인 수준을 초과하면 서비스가 포화 상태에 있기 때문에 스로틀을 시작하십시오.
당신은 이런 식으로 작업을 수행 할 수 있습니다
while (true) {
var avgLatencyInSec = GetLatencyAverage();
var thresholdLatency = 0.1; //100ms default latency
var latencyDiff = Math.Max(0, avgLatencyInSec - thresholdLatency);
Thread.Sleep((latencyDiff/thresholdLatency) * (latencyDiff/thresholdLatency));
//you need to tune the sleep amount by a constant factor
}
더 많은 사용자의 대기 시간이 더 조절이에서 시작된다 임계 값을 초과가 수렴이 보장되도록 스로틀은 차적으로 상승한다..
이것은 가능하지 않습니다. - http://social.msdn.microsoft.com/Forums/en/wcf/thread/e5335f94-bf9a-4f88-8d19-0cc8b09fab2c –
방금 입력하신 링크를 읽었습니다. ... 감사! 그러나 나는 나의 목표를 설명하기 위해 질문에 세부 사항을 추가했다. – enzom83