【问题标题】:HttpWebRequest Metrics in .NET Similar to Firebug or Pingdom Tools.NET 中的 HttpWebRequest 指标,类似于 Firebug 或 Pingdom 工具
【发布时间】:2012-01-01 18:45:01
【问题描述】:

我正在寻找一种方法来测量 .NET 中 (HTTP) Web 请求的每个步骤,类似于 Firebug 的网络瀑布时间线或 Pingdom.com 的整页测试。

两者都有一个最低共同点,即显示每个请求所需的时间跨度:

  • 查找 DNS
  • 连接
  • 发送请求
  • 等待回复
  • 接收响应

显然,我可以使用计时器来测量 Web 请求的 GetResponse() 和 GetResponseStream() 方法,但我正在寻找一种方法,通过尽可能多的测量来尽可能精细。

.NET 中衡量请求生命周期每个阶段的最佳方法是什么?

谢谢!

【问题讨论】:

  • 您是否正在寻找一种方法来从将发布HTTPWebRequest 的应用程序内部或从单独的应用程序中完成此操作?无论哪种方式,您都可以利用 SharpPcap 来监控网络流量。
  • M.Babcock,是的,我正在寻找一种在启动 Web 请求的应用程序中执行此操作的方法。我会看看 SharpPcap - 只要它对 Azure 友好就可以工作。
  • James,Glimpse 与 .NET 管道相关联。我正在查看从我在代码中发起的 Web 请求中捕获统计信息,而不是从处理该请求的 Web 服务器中。

标签: c# .net httpwebrequest metrics


【解决方案1】:

您可以查看 ETW 跟踪来执行此操作。 AFAIK ETW 跟踪从许多 .NET API 中输出大量信息。至少我在使用反射器浏览.NET框架的时候一直看到。

如果 ETW 无法做到这一点,我很确定您可以在管道中挂钩许多相关点:

  • 查找 DNS:自行查找并测量时间。 HttpWebRequest 的内部查找现在将从缓存中提供并在 0 毫秒内执行。
  • 连接:当您调用 GetRequestStream() 时发生这种情况
  • 发送请求:当您调用 GetRequestStream().Dispose() 时会发生这种情况
  • 等待响应:当您调用 GetResponseStream() 时会发生这种情况
  • 接收响应:当 GetResponseStream().Read() 返回 0 时会发生这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    相关资源
    最近更新 更多