2009-02-26 33 views
0

我們必須依賴的HttpModule和HttpHandlers的和是這樣的一個性能測量模塊:網絡性能測量和陌生的HttpModules

  1. 請求進入服務器的頁面。
  2. HttpModule_Begin在Cookie中寫入開始時間。
  3. HttpModule_End在cookie中寫入結束時間。
  4. 在客戶機中,當網頁加載完成時,斷火由HttpHandler_ProcessRequest處理經由AJAX 特殊請求
  5. 在HttpHandler_ProcessRequest從由先前HttpModule_End(其被存儲在cookie中)寫入結束時間減去DateTime.Now並將其存儲在數據庫中。 有一件事我忘了提及:所有的數據都通過一個cookie共享,所以HttpHandler只從cookie中提取數據而沒有任何會話ID,等等。 所有參與者都在同一個時區。

這個過程在大多數情況下都能正常工作,但是有一些實例報告超過一個小時的網絡時間! 這表明在結束時間的寫入和解除AJAX請求之間存在很長時間,或者在解除AJAX請求和到達應用程序服務器的時間之間存在很長時間。 我想弄清楚在野外可能會導致這個問題。爲什麼該操作不會簡單超時?

+0

同一時區的所有參與者? – AnthonyWJones 2009-02-26 13:54:22

回答

1

擴展您的故障排除:將值附加到IIS日誌(HttpContext.Current.Response.AppendToLog(string))。

IIS日誌將顯示您的條目,並且您可以確定實際記錄這些請求的時間。您可以追加任何您想要的內容,並將其顯示在日誌的查詢字段中(假設您使用的是W3C格式)。

如果您遇到延遲請求,如證據所示,您可以驗證它。 這將爲您提供IIS日誌作爲cookie中記錄值的比較源。

0

您是否包含一些唯一的ID,它允許AJAX請求處理程序計算出哪個結束時間用於計算?如果沒有,那麼可能已經在客戶端上呈現了足夠多的頁面,以致AJAX請求實際上在結束時間寫入數據庫之前到來,並且它正在使用錯誤的結束時間。