2

博客中的单个时序栏自然包括客户端传输时序。对于异常分析,我想将构建时间过长的页面与客户端速度慢的请求区分开来。

对于缓冲页面,我查看了 ASP.NET 页面生命周期模型,但没有看到我可以利用的地方,并且在代码上仅测量页面刷新到客户端之前的页面处理时间。

我可能应该提到我的目标是生产监控(不是测试或开发)。此外,目的是使用此测量值注释网络日志以供以后分析。目前我们使用 Response.AppendToLog() 自由地注释博客。我相信使用 Response.AppendToLog() 的愿望在一定程度上限制了我的潜在日志点,例如,响应对象在 Application_EndRequest 中不可行。

任何见解将不胜感激。

4

5 回答 5

2

您可以在 BeginRequest 和 PreSendRequestContent 中使用秒表,如其他两个答案中所述,或者您可以只在 PreSendRequestContent 中使用请求的时间戳。

例如,在SingingEels上,我将其添加到母版页的底部(是的,这是一个 hack):<%=DateTime.Now.Subtract(HttpContext.Current.Timestamp).TotalSeconds %>

这样我就可以看到任何页面在服务器上实际执行需要多长时间,包括访问数据库等。

于 2008-09-16T12:16:35.447 回答
0

您也可以在 Web 服务器上进行测试。然后 ClientTransmission 时间实际上变为 0。

于 2008-09-16T13:21:47.643 回答
0

最简单的方法可能是在 global.asax 文件中使用以下事件:

protected void Application_BeginRequest(Object sender, EventArgs e)
protected void Application_EndRequest(Object sender, EventArgs e)

您还可以实现自定义 httpmodule

于 2008-09-16T12:04:45.147 回答
0

这取决于您拥有的性能工具的功能集。但是,如果您只需要记录处理时间,那么您可以采用这种方法。

  1. 在HttpApplication.BeginRequest事件中记录开始时间。
  2. 在HttpApplication.PreSendRequestContent事件中记录经过的时间。

如果您只想要一个特定页面,那么您可以在 BeginRequest 事件中进行检查。应用程序事件可以附加在 Global.asax 中。

于 2008-09-16T12:09:46.507 回答
0

如果您想登录特定页面,我相信 asp.net 页面的生命周期以 PreInit 开始并以 Disposed 结束,因此您可以在这些事件中记录您想要的任何内容。

或者,如果您想登录每个页面,正如 Bob Dizzle 指出的那样,您可以使用 Global.asax 文件,该文件有一千个事件可供选择:http: //msdn.microsoft.com/en-us/library /2027ewzw.aspx

于 2008-09-16T12:11:23.930 回答