【问题标题】:does connections count matter?连接数重要吗?
【发布时间】:2009-12-23 11:12:01
【问题描述】:

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

【问题讨论】:

  • 你在使用连接池吗?您是否有应用/实例访问同一个数据库?
  • 这两个问题的答案都是肯定的。我们使用的是 ADO.net 内置的连接池机制,有近 100 个用户在使用我们的应用程序。

标签: sql-server performance connection connection-pooling


【解决方案1】:

到 SQL Server 的每个连接都需要分配一定数量的内存,因此在这方面需要考虑性能。

然而,20-30 个连接是一个非常小的数字。

您是否确认所有连接都属于您的应用程序?我问的原因是因为 SQL Server 本身会建立和维护一定数量的连接/会话,作为服务器整体操作的一部分。

一些有用的 DMV 供您监控:

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

51 以上的会话 ID 可以说是来自 SQL Server 之外的,即用户会话。

进一步了解 cmets:

SQL Server 2005 最多可支持 32,767 个连接。要检查您的容量,请执行:

select @@MAX_CONNECTIONS

如果正在使用连接池,则连接将保持打开状态并处于睡眠状态,直到需要处理请求。或者,当请求完成处理时,应用程序可能没有关闭连接。

我只能从 SQL Server 的角度发表评论,因为我不熟悉 NHibernate 的机制。

【讨论】:

  • 感谢您的回复。我确信这些是我们的应用程序连接,每个用户有 20-30 个连接,因为我们有近 100 个用户使用我们的应用程序,平均 400-涉及 500 个连接(登录到应用程序后,用户有 3 个连接)。但我无法理解的一件事是它们中的许多都处于睡眠模式。
猜你喜欢
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 2012-03-25
  • 2010-12-30
  • 1970-01-01
相关资源
最近更新 更多