June 30, 2015

Fix lỗi Max pool size was reached

Thông báo lỗi:

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.

Mình vừa làm xong cái site cho cơ quan và đồ án tốt nghiệp luôn upload lên VPS thì dính lỗi trên, sau khi dạo một dòng trên Google thì tìm ra phương pháp giải quyết, post lên chia sẽ cho anh em rút kinh nghiệm.

Lỗi trên có một số nguyên nhân dẫn đến như sau:
1. Số lượng kết nối MSSQL và thời gian kết nối MSSQL ngắn có thề tùy chình lại bằng cách vào "SQL Server Management Studio - Properties - Connections" điều chỉnh lại cho phù hợp.

2. Pool Size thấp để chỉnh cái này chúng ta có thể khai báo ở connectionString của mình ví dụ:

Trích:
string MyConnectString = "Data Source=.\\SQLEXPRESS;Initial Catalog=huynhvanmot;Integrated Security=True;Max Pool Size=100;Min Pool Size=5";
Mặc định Max Pool Size hình như là 75 (không rõ) tùy site lớn nhỏ chỉnh cho phù hợp.

3. Lỗi thứ 3 hay gặp nhất là chúng ta kết nối MSSQL thông qua một lớp khác, mở quá nhiều kết nối mà không có đóng lại.
Mình share cho các bạn BDClass của mình các bạn tham khảo và góp ý thêm nhé

Trích:
public static SqlConnection taoketnoi()
{
string chuoi = "Data Source=.\\SQLEXPRESS;Initial Catalog=huynhvanmot;Integrated Security=True;Max Pool Size=300;Min Pool Size=5";
SqlConnection con = new SqlConnection(chuoi);
con.Open();
return con;
}

public static DataTable TruyVan_TraVe_DataTable(string strSQL)
{
SqlConnection con = taoketnoi();
try
{
SqlDataAdapter da = new SqlDataAdapter(strSQL, con);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
finally
{
//'finally' block is ALWAYS get called.
con.Close();
con.Dispose();
}

}

0 comments:

Post a Comment