SQL Server最大連線數問題
阿新 • • 發佈:2019-02-02
最近公司測試在進行伺服器效能測試,在處理超過100個併發請求後,資料庫就崩掉了。
閒著沒事,就找了一下原因。
1.首先,看了看SQL Server伺服器屬性的配置,看到連線數為0,即不限制,SQLserver最大連線數為32767。看來應該不是這裡的問題
2.百度了一下,發現可能是程式的資料庫連線字串出了問題
自己寫了個程式碼測試一下
class Program
{
private static void Main(string[] args)
{
TestSQLServerConnectionCount();
Console.Read();
}
public static void TestSQLServerConnectionCount()
{
try
{
int maxCount = 40000;
string connectionString =
"Data Source=localhost;Initial Catalog=EveryDayTest;User Id=sa;Password=sa123;";
for (int i = 1; i < maxCount; i++)
{
var db = new SqlConnection(connectionString);
db.Open();
Console.WriteLine("已建立連線物件" + i);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
發現最多隻能建立100個,
然後添加了屬性Max Pool Size=101,又測了一下,恩可以了
。恩果然是這裡,不過。在測試系統的時候發現,有的時候連線數到達40多或60多或80多後就不再增長了,難道說這裡有個重複利用資料庫連線的機制?
找了一下,發現有個Pooling屬性,預設為true,於是加上了這條Pooling=false,執行一下
哇擦,已經超過了32767!!!難道說這個屬性可以讓連線反覆利用,從連線池取出來可以再次使用的連線物件?還是說根本不受連線池的最大限制?
果然,看了一下連線池的執行方式發現:
1、當一個程式執行Connection.open()時候,ADO.net就需要判斷,此連線是否支援Connection Pool (Pooling 預設為True)-------------------摘自《http://www.studyofnet.com/news/637.html 資料庫最大連線池max pool size》
不過,為什麼系統測試時到了60左右的連線數不再增長了?max pool size配置100+個啊?
求大神解釋...........