2010-10-08 28 views
1

我有一個web應用程序偶爾會拋出這個錯誤...。SQL服務器超時 - 只發生很偶爾

異常消息:超時過期。 操作完成之前已經超時的時間或 服務器沒有響應。

當我這樣做時,即使通過管理工作室,我也無法連接到SQL服務器,它說服務器超時並且無法連接。

只要我重置iis,它立即回來。所以這顯然意味着它是我的代碼中的東西造成了這種情況。我有一個MVC站點,使用Linq到SQL和SQL緩存依賴關係,並啓用服務代理。

我已經在整個代碼中徹底地使用了using語句,所以我確定它不是泄漏連接。通過服務器日誌來讀取會讓事情更加混亂,因爲有太多的信息和警告事件,我不是系統管理員,所以很難知道發生了什麼。

它開始於我得到一個ASP.net 4.xxxxx事件ID 1309異常消息:超時過期。操作完成之前超時的時間或服務器沒有響應。錯誤

我想我在上一次服務器上通過重新啓動IIS時發現了這個錯誤,這是我不想訴諸於這臺新服務器上的東西。

所以我的問題是,我可以採取哪些措施來嘗試減少,但理想情況下消除此超時錯誤?

任何幫助表示最欣賞

Truegilly

+0

只是改變了一件事... 我現在已經增加了pollTime爲默認值60000,這可能有助於DB不會被擊中隨時隨地接近 – JGilmartin 2010-10-08 13:21:37

回答

1

這類問題通常歸結爲兩件事情之一。要麼你沒有正確地處理你的連接,要麼你有許多重大的查詢完全接管你的數據庫服務器。

如果您沒有正確處理連接,IIS會很樂意保留它們,直到垃圾收集運行和/或它們超時。如果你有一個非常輕微的被販運的網站,那麼你不會看到問題。

但是,一旦流量達到掛起的連接數超過嘗試連接數據庫服務器的次數的時間點,那麼您將開始看到一對可能的錯誤之一。超時已過期。確切的錯誤將取決於哪個部分正在崩潰:連接池,sql服務器本身等。

您評論的修復程序是一種臨時解決方案。隨着你的流量不斷增加(有很好的問題),那麼你的代碼的其他領域將會導致問題再次出現。