過去一周我一直遇到麻煩,我在 IIS 上運行的一個 Web 應用程式每天至少隨機掛起一次,我必須回收應用程式集區才能將其恢復正常。 CPU和記憶體看起來都正常。
當我查看IIS 管理器中工作進程部分中的活動線程時,我可以看到線程不斷累積,就好像它們被卡住一樣,當它掛起時,那裡大約有25 個以上的線程,當運行正常時,任何一點都有3-6 個線程。
我猜這可能是由於我的 C# Web 應用程式上的程式碼變更所致,但我不知道它在哪裡/是什麼,根據我的記憶,只進行了一些細微的更改。
上週,我真的很努力地嘗試使用 WinDbg 和 dotTrace 等多種工具進行診斷,看看是否可以找到任何明顯的東西,但此時我有點不知所措。
我可以看到有很多線程連接到我的NoSql 資料庫(RavenDb) 時出現超時錯誤,但是我認為這是一個轉移注意力的事情,並且是由於IIS 中的線程被阻止,因為我可以從另一個IIS應用程式連接到同一個資料庫就好了,還有使用資料庫管理工具來管理/查詢資料庫。
我有迷你轉儲和 dotTrace 快照可以使用。
以下是 WinDbg 上「~*e !clrstack」的結果: https://gist.github.com/phinet/7901d82fa526696d3c92
關於我應該尋找什麼來追蹤罪魁禍首有什麼幫助/想法嗎?如果需要的話,我很樂意提供對小型轉儲的訪問。
謝謝你!
答案1
從 DebugDiag v2 update 1 開始並強制進程轉儲然後執行掛起分析可能會更簡單、更快。