在.NET/WCF中检测连接速度/带宽

3
我正在使用 WCF 编写客户端和服务器代码,需要知道客户端和服务器之间的“感知”带宽。我可以单独使用 ping 统计信息来收集此信息,但我想知道是否有一种方法可以配置 WCF 中的通道堆栈,以便在执行 Web 服务调用时同时收集相同的统计信息。这在禁用 ICMP(例如,ping 无法工作)的情况下特别有用。
简而言之,在进行正常的业务相关 Web 服务调用(确切地说是 REST 调用)时,是否有一种隐式收集连接速度数据的方法?
当然,我可以计时 Web 服务往返时间,与往返中使用的数据大小进行比较,以给我一个吞吐量的概念,但我不会知道其中多少感知带宽是与网络相关的,或仅仅是由于服务器处理延迟。我可以通过让服务器发送一个时间差来解决这个问题,表示服务器延迟,以便客户端可以计算实际的网络流量时间。如果没有更复杂的方法可用,那么可能就是我的答案……

可能是通道堆栈,在客户端和服务器端都可以用来告诉我单向传输的有效负载的真实总大小。这可能会极大地帮助我的吞吐量计算。 - Brent Arias
1个回答

0

ICMP并非旨在尝试连接速度统计,而是用于检查两个主机之间是否建立了有效连接。

我最好的猜测是,在这些REST调用或ICMP流量中发送的数据量不足以计算感知连接速度/带宽。

如果您按这些指标计算,您将获得非常大的带宽统计数据或非常低的数据,例如在Windows XP中的复制框。您需要发送恒定且大量的数据才能计算出有效的吞吐量统计数据。


当我使用大量的Web服务调用攻击服务器时,我最需要这个吞吐量信息。 这可能足以让我获得比实际带宽感知测量值低20%的结果,这对我的需求可能已经足够了。 - Brent Arias
如果你需要一个模糊的统计数据,那么你已经得到了答案。你所描述的过程听起来已经足够好了。只需消除服务器处理请求所花费的时间差,并获得时间,然后使用基本的距离与时间公式来获取网络速度即可。 - jpabluz
“distance over time formula”?你是指“数据量/大小随时间变化”吗? - Brent Arias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接