我有一個使用ASP.NET與「InProc」會話處理的Web應用程序。通常情況下,一切運行正常,但每天幾百個請求比正常運行需要更長的時間。在IIS日誌中,我可以看到這些頁面(通常需要運行2-5秒)運行20秒以上。爲什麼頁面處理的AspNetSessionData階段會將我的頁面延遲20多秒?
我啓用了失敗請求的詳細模式跟蹤,並發現延遲在AspNetSessionData部分發生。在下面的示例中,AspNetSessionDataBegin和AspNetSessionDataEnd之間存在39秒的間隔。
我不確定接下來要做什麼。我找不到任何延遲的原因,我找不到任何可以啓用的日誌記錄功能來告訴我這裏發生了什麼。有誰知道爲什麼會發生這種情況,或者有任何建議可以幫我找到問題所需的額外步驟?
我的應用程序通常存儲在1-5MB會爲每個用戶,對搜索主要是緩存數據。該服務器有大量可用內存,並且只能運行大約50個用戶。
你知道任何有關緩慢請求?例如,他們是從數據庫中獲取數據嗎?他們是否在使用會話中的數據? – 2011-04-26 13:56:49
調查的一個可能的途徑是鎖定會話狀態的爭用。看看最後一段http://msdn.microsoft.com/en-us/library/ms178581.aspx – 2011-04-26 13:57:30
參見http://odetocode.com/Blogs/scott/archive/2006/05/21/ session-state-uses-a-reader-writer-lock.aspx - 「當請求到達讀取和寫入會話變量的頁面時,運行時會獲取寫入者鎖定,寫入者鎖定會阻止同一會話中的其他頁面誰可能會寫入相同的會話變量。「 – 2011-04-26 13:58:54