2012-06-01 90 views
2

我管理一個ASP.NET MVC 3網站,其中包含多個在線事務。在網站上,客戶可以下訂單,支付賬單,而供應商可以向客戶收費。所有這些都可以同時發生,所以我有信號來確保線程安全。SQL Server停頓十分鐘

我注意到的是,大約每週一次,網站停止十分鐘。我第一次嘗試的是信號量的死鎖,但是在創建信號量日誌並分析結果之後,似乎沒有死鎖。另外,網站在十分鐘後自動回來。

在調查時,我注意到整個網站變得反應遲鈍,而不僅僅是使用信號量的部分。他們都使用數據庫艱難。這就是爲什麼我的主要嫌疑人是數據庫。

奇怪的是,每次網站凍結十分鐘幾乎到第二個。 SQL Server可以有計劃的維護或任何可以解釋這種延遲的東西嗎?如果沒有,你有什麼想法可能會導致這種情況?

+1

它聽起來像一個計劃(壞)維護,但這不是默認情況下,有人安裝它。 – Aristos

+0

您用完SQL連接嗎?如果連接沒有正確關閉,可能會發生這種情況。 – Tommy

回答

1

您的問題的答案似乎是「是」。在鎖定事物的環境中發生了一些事情。

你運行sp_who2來查看停頓時正在運行的是什麼嗎?

如果這樣不方便,請設置一項作業,以每五分鐘將sp_who2輸出轉儲到表中。當它停頓時,你可以看到正在運行的東西並從那裏開始工作。

我遇到了可能是類似的問題,其中主數據庫似乎被鎖定。因此,重命名數據庫不起作用。幸運的是,這不是一個活的事務環境,所以等待五分鐘,然後再試一次。

1

ASP.NET掛起可能會出於各種原因。通常情況下,當您遇到SQL不掛起問題時,您會收到連接或命令超時。

,你已經開

  • 更好的拼搶調試Tools for Windows
  • 使用ADPlus抓住一個內存轉儲(adplus -hang -pn processname.exe)或DebugDiag資料和設置轉儲規則
  • ,使用WinDbg(或VS 2010 4.0框架)(設置符號緩存後),並開始檢查使用 !threads!dumpheap -stat檢查線程和堆對象。

請注意調試生產問題非常困難,WinDbg不是一個友好的工具,但猜測和查看日誌更是如此。