簡體   English   中英

從池中獲取連接之前經過的超時時間

[英]The timeout period elapsed prior to obtaining a connection from the pool

我收到了錯誤:

錯誤連接:超時已過期。 從池中獲取連接之前經過的超時時間。 這可能是因為所有池連接都在使用中並且達到了最大池大小。

每當我在瀏覽器中等待響應很長時間后停止IIS時,它就會出現。 如果我試圖等待,那么我得到的錯誤是An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll但我得到的錯誤是寫得很舊。 我只寫了一個沒有任何異常的新命令。 [我認為第一次運行錯誤首先出現錯誤,所以所有新錯誤都不能給出異常]。

所以我需要做些什么才能解決這個問題。

該錯誤表示連接池沒有連接。 通常的原因是在使用后忘記關閉連接,例如:

var con = new MySqlConnection("Server=YourDB;Database=YourDb;...");
con.Open();
var com = con.CreateCommand();
com.CommandText = "select * from YourTable";

此代碼忘記關閉連接,因此池連接較少。 你可以通過添加:

con.Close();

在末尾。 但是,如果查詢引發異常,則將跳過Close ,並且您仍然關閉1連接。

更好的方法是using語句:

using (var con = new MySqlConnection("Server=YourDB;Database=YourDb;..."))
{
    con.Open();
    var com = con.CreateCommand();
    com.CommandText = "select * from YourTable";
}

您可以通過在連接結束時添加max pool size輕松解決此問題,例如:

Server=YourDB;Database=YourDbUid=YourUser;Pwd=YourPwd;max pool size=1;

這使您的池大小為1,如果您忘記釋放一個連接,則會立即觸發錯誤情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM