2010-04-24 65 views
1

關閉所有連接,我做現在,我得到這個錯誤的應用程序:C#+ Mysql用完連接。我使用「使用」,並立即

error connecting: 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.

顯然我在連接池感人最大數。我對所有連接對象盡職地使用「使用」,並在功能完成後立即釋放它們。

這是關於C#的,我正在使用MySql Data Dll。

MySql的dotnet連接器有問題嗎?有沒有解決方法?

+0

你有沒有得到一個答案? – Rippo 2010-12-17 10:53:28

+0

不,但我可以通過關閉連接來解決此問題,並且它的工作非常出色。這是一個黑客,我知道。 – 2010-12-22 06:46:59

回答

1

有幾件事情首先要檢查:

  • 您是否驗證了您的應用程序是不是想比連接池所允許的數量同時使用多個連接? 如果您在使用連接時進行的操作相當長時間(反正可以避免的情況),這很容易發生。

  • 你傳遞了​​一個DataReader,而不是在你完成它時正確地處理它。這可能會持續到連接。

作爲一種權宜之計,您可以嘗試在連接字符串中設置「pooling = false」,但這會降低性能。

有關使用連接池的更多信息,請參閱Using Connector/NET with Connection Pooling

+0

不,我沒有傳遞一個Datareader,我確實使用'using'來處理它。儘管我傳遞了一個Command對象。沒有很長的操作,但是有很多簡短的操作,我每次都處理對象。很難想象這可能會導致連接池溢出。 – 2010-04-25 02:26:45

+0

您可以將有問題的行爲分離爲簡單的代碼示例並將其發佈到此處嗎? 您運行的是.net連接器的哪個版本? – Frederik 2010-04-25 08:40:53

+0

我不認爲這是由於任何特定的代碼,但可能是由於我使用DLL的整體方式。我還沒有面對過這個問題,而這個問題並不少於數據庫密集型,並且基於相同的結構。 MySQL dll的版本是5.0.9.0 – 2010-04-26 09:45:51