異常信息的連接之前經過超時時間超時過期。在從池中獲取連接之前已超時。此 可能發生,因爲所有池連接都在使用中,並且已達到最大池大小。個MySqlException: 異常類型::個MySqlException</p> <p>異常消息:錯誤連接:從池中獲取
以上是我在事件查看器中遇到的錯誤。這個例外似乎只發生在我們的開發服務器上。這是一個內部倉庫管理和私人公司網店。我們有它不到100的用戶在給定的時間,這是我的理解:
- 連接無法進行,因爲有太多打開的線程。我已經做了
事情來試圖解決這個問題:
- 強制啓用 「池= TRUE;」在應用程序的連接字符串中。
- Force「Max Pooling Size = 1000;」在應用程序的連接字符串中。
- 在MySQL Administrator中將連接線程空閒時間從8小時減少到2小時。
- 增加允許在MySQL Administrator的最大連接數爲1000
這似乎仍然導致同樣的問題,我目前在我束手無策。爲了破壞控制這個問題,我正在用超過一個小時或兩個小時的線程來查殺用戶。我已經監測到,在這些崩潰期間,最多隻有大約108個連接。 當有40個IDLE線程時,它停止接受連接的一個特定時間。
以下是用於進行交易的代碼。
/// <summary>
/// Begin a database transaction.
/// </summary>
/// <returns>The database connection.</returns>
public DbTransaction BeginTransaction()
{
if (_DbConnection.State != ConnectionState.Open)
{
_DbConnection.Open();
}
return _DbConnection.BeginTransaction();
}
/// <summary>
/// Commit a database transaction.
/// </summary>
/// <param name="transaction">The database connection.</param>
public void CommitTransaction(DbTransaction transaction)
{
if (transaction != null)
{
transaction.Commit();
transaction.Dispose();
}
if (_DbConnection != null)
{
_DbConnection.Close();
}
}
/// <summary>
/// Rollback a database transaction.
/// </summary>
/// <param name="transaction">The database transaction.</param>
public void RollbackTransaction(DbTransaction transaction)
{
if (transaction != null)
{
transaction.Rollback();
}
}
你如何執行對數據庫的查詢?你在處理db連接/命令嗎? –
@IvanMilosavljevic我用我用來做查詢的代碼更新了這個問題。 – Perfection