连接是否重要?

时间:2009-12-23 11:12:01

标签: sql-server performance connection connection-pooling

我们有一个应用程序使用NHibernate连接到SQL Server上的数据库。我们使用连接池和每个请求的会话方法来执行我们的SQL Server查询。 我们使用SQL Server活动监视器来监视连接数,并注意到每当用户登录系统时都会涉及25-30个连接。 所以这是我的问题:与SQL Server的大量连接是否会导致性能问题?

1 个答案:

答案 0 :(得分: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的机制。