我们有一个依赖 HttpModule 和 HttpHandlers 的性能测量模块,其工作方式如下:
- 请求进入服务器以获取页面。
- HttpModule_Begin 在 cookie 中写入开始时间。
- HttpModule_End 在 cookie 中写入结束时间。
- 在客户端,页面加载完成后,通过 HttpHandler_ProcessRequest 处理的 AJAX 触发一个特殊请求
- 在 HttpHandler_ProcessRequest 中,从之前的 HttpModule_End(存储在 cookie 中)写入的结束时间中减去 DateTime.Now 并将其存储在数据库中。我忘了提一件事:所有数据都是通过 cookie 共享的,所以 HttpHandler 只是从 cookie 中提取数据而没有任何会话 id 等……所有参与者都在同一个时区。
此过程在大多数情况下都可以正常工作,但有些情况会报告网络时间超过一个小时!这表明在写入结束时间和触发 AJAX 请求之间经过了非常长的时间,或者从触发 AJAX 请求到它到达应用服务器的时间之间经过了很长的时间。我试图弄清楚是什么导致了这个问题。为什么操作不只是超时?