2009-09-11 66 views
3

我建立運行罰款了幾個小時一個網站,但隨後*的.asmx和* .ashx的電話開始計時了。什麼是調試超時的一些好方法? (C#)

唯一的例外是:「超時過期之前獲得從池中出現這種情況可能是因爲所有池的連接正在使用,並且達到最大池大小的連接超時時間已過。」

我使用的是亞音速的ORM。

我懷疑問題是基於運行每隔幾分鐘,訪問數據庫計劃任務。當我看到在SQL Server 2000中的「當前活動」,我看到有:

  • 100的過程與狀態「睡眠」
  • 100鎖

的100個過程是從申請「 .Net SqlClient數據提供者「,命令是」AWAITING COMMAND「。

所以我猜這是個問題。 。但是如何解決它?這聽起來像是在數據庫中的死鎖條件?當我

C:\> iisrestart

,一切都很好(暫時的)。

謝謝 - 我只是從來沒有遇到過這樣的事情,我不肯定是最好的生活方式。

邁克爾

回答

6

這可能是這個問題的一個副本 - Is connection pooling working correctly in Subsonic?

如果你加載與加載的對象()代替的LoadAndCloseReader(),每個連接都將保持打開狀態,並最終耗盡連接池。

+0

謝謝,48klocs - 我打了一個電話給.FetchByParameter(),它產生了一個我沒有關閉的閱讀器。現在,讀者處於「使用」區塊,​​它更穩定。但是,我仍然穩定在2個開放的連接,我不完全理解。比100多個連接好得多,但我仍然試圖弄清楚。 – marclar 2009-09-15 22:20:10

0

我不知道亞音速什麼,但也許你正在泄漏數據庫「語境」?我會檢查你完成它之後的任何數據庫資源正出售...

6

在集合上調用Load()時,它將使Reader保持打開狀態 - 如果您希望閱讀器關閉或使用using塊,請確保調用LoadAndCloseReader()。

它有助於獲得一些源代碼。

相關問題