2012-07-19 34 views
4

我正在使用.Net 2.0,並且我的網站在某個時期似乎達到了死鎖狀態。它停止工作,直到我回收應用程序池或在web.config文件中更改某些內容。我認爲僵局導致了這個問題。如何在ASP.Net中找到死鎖網站

我想知道是否有任何工具來調試/檢查站點找到可能導致死鎖的代碼。

現在我必須設置回收間隔爲10分鐘,這是非常糟糕的,但它是解決問題的唯一方法,並且網站上有很多代碼,我需要找到問題。如果我使用DOS攻擊工具,我可以找到導致此問題的頁面/代碼塊嗎?如果可以,測試它的最佳工具是什麼?

乾杯!

編輯 我試圖檢查事件日誌並發現以下警告。我不知道這是不是問題現在會繼續挖掘。 異常信息: 異常類型:HttpException 異常消息:請求超時。

+1

這從頻道9系列視頻涵蓋了這一點(密切相關的主題):「[.NET調試的生產環境(HTTP: //channel9.msdn.com/Series/-NET-Debugging-Stater-Kit-for-the-Production-Environment/Diagnosing-Application-Issues-01)」。 – Richard 2012-07-19 09:12:58

回答

1

我會發生死鎖時的Visual Studio附加到IIS並打破調試器。然後您可以檢查正在運行的線程的調用堆棧。

代碼項目有nice article on how to do IIS remote debugging

當然,你可以很好地建立一個測試機器與本地IIS和本地的Visual Studio .NET,而不需要遠程調試。

+0

我試圖將Visual Studio附加到IIS進程,但它說:「無法附加到進程,64位調試器的組件未註冊,請通過」添加或刪除程序「修復Visual Studio 2008遠程調試器安裝。看來我們必須要求我們的主機設備在服務器上升級Visual Studio。 – 2012-07-23 05:03:09

+0

@JonasT我寧願先建立一個本地機器(VMware)來模仿直播系統。只有在這種情況下不起作用,請嘗試轉到實時系統。 – 2012-07-23 05:11:57

+1

我終於找到了問題。這是使用靜態類的靜態函數的遺留代碼。當網站上的訪問者數量增加時,就會發生這種情況。在我更改了代碼以使用實例而不是靜態之後,問題已解決。 – 2013-04-02 02:53:29

1

如果您使用'失敗的請求追蹤'並且它會產生一個很好的輸出,然後它會告訴你什麼導致錯誤,直到模塊級別。這會讓你邁出第一步進入分解階段。

對這篇文章iis.net的讀 - >Troubleshooting Failed Requests Using Tracing in IIS 7

+0

謝謝。一旦我進入服務器,我會嘗試它。 – 2012-07-20 00:23:31