gpt4 book ai didi

.net - WCF内部队列监控(为了避免向服务发送太多请求)

转载 作者:行者123 更新时间:2023-12-01 05:30:53 26 4
gpt4 key购买 nike

我读到 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
}

您的延迟超过阈值越多,节流就会越多。节流呈二次方上升,因此可以保证收敛。

关于.net - WCF内部队列监控(为了避免向服务发送太多请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11245754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com