通过HttpHandlers和HttpModules奇怪性来测试asp.net 2.0中的网络性能

时间:2009-02-26 13:49:14

标签: asp.net performance .net-2.0 httphandler httpmodule

我们有一个依赖于HttpModule和HttpHandlers的性能测量模块,其工作原理如下:

  1. 请求进入服务器页面。
  2. HttpModule_Begin在cookie中写入开始时间。
  3. HttpModule_End在cookie中写入结束时间。
  4. 在客户端,页面加载完成后,通过AJAX触发特殊请求 由HttpHandler_ProcessRequest
  5. 处理
  6. 在HttpHandler_ProcessRequest中,从前一个HttpModule_End(存储在cookie中)写入的结束时间中减去DateTime.Now并将其存储在数据库中。 有一点我忘了提到:所有数据都是通过cookie共享的,所以HttpHandler只是从cookie中提取数据而没有任何会话ID等等...... 所有参与者都在同一时区。
  7. 此过程适用于大多数情况,但有些情况下报告的网络时间超过一小时! 这表示在写入结束时间和触发AJAX请求之间或者在发出AJAX请求和到达应用服务器之间的大量时间之间有非常大的时间间隔。 我想知道什么可能导致这个问题在野外。为什么操作不会简单地超时?

2 个答案:

答案 0 :(得分:1)

扩展故障排除:将值附加到IIS日志(HttpContext.Current.Response.AppendToLog(string))。

IIS日志将显示您的条目,您可以确定实际记录这些请求的时间。您可以附加任何您想要的内容,它会显示在日志的查询字段中(假设您使用的是W3C格式。)

如果您遇到请求延迟,证据显示,您可以对其进行验证。 这将为您提供IIS日志作为针对cookie中记录值的比较源。

答案 1 :(得分:0)

您是否包含一些允许AJAX请求处理程序确定用于计算的结束时间的唯一ID?如果没有,可能已经在客户端呈现了足够的页面,在结束时间写入数据库并且使用错误的结束时间之前,AJAX请求实际上已经到来。