如何衡量调用WCF Web服务所用的时间?

时间:2010-03-24 17:43:59

标签: wcf

我们希望跟踪客户端和服务器之间的Web服务调用所花费的时间。此时间不应包括服务器处理请求所花费的时间。 我们的想法是,我们希望看到由于通过网络进行实际传输而导致Web服务调用丢失的时间。

WCF是否已经朝这个方向提供了一些东西?

当然我可以在客户端添加一个计时器并减去服务器处理时间,但这不会很优雅。

2 个答案:

答案 0 :(得分:3)

WCF有很多性能计数器 - 请参阅MSDN docs on this topic或查看How to use WCF Performance Counters以获取有关如何使用这些计数器的用户报告。

另一种选择是启用WCF tracing - 您将获得有关邮件如何通过系统传输的详细报告,包括时间戳。基于这些位,你应该能够确定在网络上花费的时间等。有一个非常好的WCF Trace Viewer工具,可以让你很容易地检查这些跟踪文件。

另一种选择是使用标题,例如DateTime字段:在发送消息时在客户端添加第一个头(“ClientOut”),并在服务器上添加更多(例如“ServerIn”,“ServerOut”),然后再在客户端添加最后一个( “ClientBackIn”)。如果您记录实际日期/时间,您应该能够查看这些标题,并查看有关客户端和服务器之间的行程花费的时间的一些信息。您可以为WCF创建一个Message Inspector扩展来执行类似的操作。

答案 1 :(得分:0)

基本上,如果评估足够好,那么Ping测试(ICMP Echo)应该足以计算出客户端和服务器之间数据包的往返时间。

但如果您需要强大的数据,则必须:

  1. 确保客户端和服务器处于同步状态。这可以通过将双方与stratum-1或stratum-2 NTP / SNTP服务器同步来实现(参见RFC 95813051361),或实施一些其他同步协议。
  2. 发送和接收时每个“消息”(方法调用)的时间戳。
  3. 计算该讯息的旅行时间,并将其列出。