2012-06-29 118 views
1

在數據上下文調用的SubmitChanges()時,我有一個持續的問題有以下例外的SubmitChanges()超時:LINQ到實體上

「超時時間已超時時間之前完成上述操作經過或者服務器沒有響應,聲明已經終止。「

這發生在由5-100個併發用戶使用的ASP.NET Web應用程序上。請注意,增加站點/數據庫的超時時間並沒有幫助,並且運行的查詢非常簡單快捷。我甚至完全刪除了導致網站在發生錯誤時無限期掛起的超時時間。

這個問題的其他方面:

  • 這是間歇性的,無法可靠地再現
  • 它只是發生在幾個不同的方法,從來沒有任何人
  • 增加或刪除的超時時間沒有幫助
  • 重新啓動服務器,並重新啓動MSSQL數據庫並沒有幫助

這似乎可能是一個併發/死鎖問題,但我不知道如何調試或修復它。有任何想法嗎?

回答

1

當應用程序執行的數據庫操作和等待的SubmitChanges的響應嘗試在sqlserver的

**sp_who2** 

運行下面的查詢已經在返回的輸出看看Blkby列。 如果您發現有一行具有某個值(這是阻止您連接的命令的SPID)。

檢查該列中的ProgramName以查找更多信息。

如果按照說明找到阻塞的SPID,則運行以下命令以查找在該SPID上執行的最後一個查詢。 說Blkby有59

**dbcc inputbuffer(59)** 

這個值將給查詢阻止您的應用程序查詢。

這是排除故障的一種方法。

有時會由於存儲過程中的默認值參數導致參數嗅探而發生超時。

在這種情況下,你可以嘗試使用該行,使用

SET ARITHABORT在程序的第一行ON

改變程序並再次嘗試數據庫操作。

如果有效,您可以在此後刪除此行,然後再次更改程序。

試試這個,如果它適合你。

我發現這裏

類似的問題也瞭解查詢的詳細信息在運行的Web應用程序緩慢,並立即在SSMS這裏

Stored procedure slow when called from web, fast from Management Studio

希望它能幫助。

+0

謝謝Dnsh,我會試一試,讓你知道它是否有效。由於問題是間歇性的,我需要等待一些超時開始發生,然後我會檢查Blkby – PseudoTek