2009-12-23 82 views
0

我們有一個應用程序,它使用NHibernate連接到SQL Server上的數據庫。我們使用連接池和會話每請求方法通過SQL Server執行我們的查詢。 我們使用SQL Server活動監視器來監視連接數,並注意到每當用戶登錄到系統時都會涉及25-30個連接。 所以這裏是我的問題要問:可以大量連接到SQL Server導致性能問題?連接數是否重要?

+0

您使用連接池嗎?你有應用程序/實例擊中相同的數據庫嗎? – RichardOD

+0

這兩個問題的答案都是肯定的。我們使用ADO.net構建連接池機制,並且有將近100位用戶使用我們的應用程序。 – Beatles1692

回答

2

與SQL Server的每個連接都需要分配一定數量的內存,因此在這方面需要考慮性能。

然而,在事情的計劃中,20-30連接是一個非常小的數字。

您是否驗證過所有連接都屬於您的應用程序?我問的原因是因爲SQL Server本身將建立並保持一定數量的連接/會話作爲服務器整體操作的一部分。

一些有用的DMV對你的監控:

select * from sys.dm_exec_connections 
select * from sys.dm_exec_sessions 

會話ID的上述51從SQL Server之外可以這麼說,也就是用戶會話。

繼評論:

的SQL Server 2005最多可支持32,767個連接。要檢查你有能力執行:

select @@MAX_CONNECTIONS 

如果正在使用連接池,然後直到需要處理請求的連接將保持開啓並處於睡眠狀態。或者,當請求完成處理時,應用程序可能沒有關閉連接。

我只能從SQL Server的角度發表評論,因爲我不熟悉NHibernate的機制。

+0

感謝您的回覆。我確信這些是我們的應用程序連接,每個用戶的連接數爲20-30,因爲我們有近100位用戶在使用我們的應用程序,所以平均涉及400-500個連接在應用程序中,用戶有3個連接)。我不明白的一件事是,它們中的很多都處於睡眠模式。 – Beatles1692

相關問題