我遇到了難以描述的問題。我將從重現的步驟開始,然後繼續細節。因此,在一般的步驟:同時開始的兩個並行請求一個接一個地執行
- 經營的網站上長期運行的操作(變更申報狀態,POST)
- 嘗試在同一瀏覽器中打開另一個頁面,而另一個選項卡(表報告,GET)
- 嘗試打開同一個頁面上的步驟2,但使用其他瀏覽器/隱身模式下
這樣做的結果是: 比方說,第一個操作需要80秒,完成後,第二操作時間與第一個完全相同,但是,最感興趣的是什麼第三個完成不到1秒。所有3個請求都使用相同的憑據。
該應用程序使用ASP.NET MVC 3構建; IIS 8.5,.NET v4.5應用程序池。沒有數據庫鎖。
長時間運行的操作是對同一應用程序中託管的內部asmx Web服務(許多調用,一個接一個,平均執行時間爲1.5秒)進行調用。所有步驟都使用同一控制器的不同方法。
這裏是IIS log步驟(步驟1-線67,步驟2-線68步驟3-線14)。
儘管步驟3沒有任何延遲地執行,爲什麼通過運行步驟2有這樣的超時?
編輯:
感謝@arknotts,似乎這是一個會話鎖定。
只是想分享一些鏈接,這些誰都會面臨同樣的問題:
- Can a single asp.net user make more than one request at a time if the Session is in use?
- ASP.NET Session State Overview(併發請求和會話狀態部分)
- I just discovered why all ASP.Net websites are slow, and I am trying to work out what to do about it