2009-12-23 123 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

相关问题