2011-04-07 113 views
0

我不知道是什麼樣的錯誤是這樣的。我不能打開我的網站了網絡超時問題?

Server Error in '/site' Application. 
Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached. 

請幫助我.. TNX

+0

您的網站在共享服務器上(與其他網站共享)還是獨立的? – 2011-04-07 12:08:39

+0

您確實開發了該網站,對吧? – 2011-04-07 12:12:17

回答

3

超時過期(東西所花的時間比它應該)。具體來說,在從連接池獲取連接之前已經過了超時時間。事實證明,這可能發生是因爲所有池化連接都在使用中,並且達到了最大池大小。

(你正在使用連接池,可能不關閉您的連接。您使用的是SqlConnection或類似的連接對象完成後,調用.Close()就可以了)

+0

這個錯誤不會更多地與IIS中的線程池相關,而不是與數據庫連接有關嗎? – 2011-04-07 12:10:58

+0

檢查你的代碼:你打開連接。完成後關閉它們,重新編譯並重新部署。 – 2011-04-07 12:11:07

+0

@Jon - 不,與IIS無關:它是在討論連接池。它顯示在Web瀏覽器中的事實僅僅是因爲它是一個Web應用程序 – 2011-04-07 12:11:40

3

10 Tips for Writing High-Performance Web Applications

連接池

在您的Web應用程序和SQL Server™之間建立TCP連接可能是一項昂貴的操作。微軟的開發人員已經能夠利用連接池一段時間了,允許他們重新使用連接到數據庫。

當你完成它們時,請務必關閉你的連接。不要相信公共語言運行時(CLR)在預定時間爲您清理並關閉連接。 CLR將最終銷燬該類並強制關閉連接,但您無法保證對象上的垃圾收集何時實際發生。

要最佳地使用連接池,有兩條規則可以生存。首先,打開連接,完成工作,然後關閉連接。如果您必須(最好是應用提示1)而不是保持連接打開並通過不同方法傳遞連接,則可以在每個請求上多次打開和關閉連接。其次,使用相同的連接字符串(如果使用集成身份驗證,則使用相同的線程標識)。如果您不使用相同的連接字符串,例如基於登錄用戶自定義連接字符串,則不會獲得連接池提供的相同優化值。如果您在冒充大量用戶的同時使用集成身份驗證,則您的聯合身份驗證的效率也會低得多。嘗試查找與連接池相關的任何性能問題時,.NET CLR數據性能計數器可能非常有用。 每當您的應用程序連接到另一個進程中運行的資源(例如數據庫)時,您應該關注連接資源的時間,發送或檢索數據的時間以及往返次數。優化應用程序中的任何類型的進程跳轉是首先實現更好性能的首選。

+0

這是複製所有文本的準則。只需離開鏈接。 – Aliostad 2011-04-07 12:11:45

+0

@Aliostad - 我雖然如此......但它認爲它更好地粘貼鏈接+競爭網站,以便他可以更容易地獲得更多想法 – 2011-04-07 12:13:09

+0

只需帶上一小段代碼並將其作爲報價。我會重新考慮我的失望。 – Aliostad 2011-04-07 12:14:24