SQL Server 连接数的任何限制?
Posted
技术标签:
【中文标题】SQL Server 连接数的任何限制?【英文标题】:any limit of SQL Server connection count? 【发布时间】:2010-12-02 18:02:50 【问题描述】:我正在使用 SQL Server 2008 Enterprise + C# + ADO.Net + .Net 3.5。我正在使用 sp_who2 或 sys.dm_exec_connections 来查找活动连接号(如果我查找活动连接号的方法有误,请告诉我)。对于一些繁重的数据库消费者应用程序,我什至可以发现活动连接数 > 1000。
我想知道SQL Server的活动连接数有没有上限限制?
提前致谢, 乔治
【问题讨论】:
【参考方案1】:这是针对每个实例而不是针对数据库的配置。您可以检查sys.configurations
中的当前值并使用sp_configure
更改它。相关选项为user connections
:
使用用户连接选项 指定最大数量 允许同时用户连接 在 Microsoft SQL Server 上。实际上 允许的用户连接数 还取决于 SQL 的版本 您正在使用的服务器和限制 您的应用程序或应用程序和 硬件。 SQL Server 最多允许 32,767 个用户连接。
1000 个连接并不是一个非常高的数字。在高端系统上,服务器可以侦听多个端口 affinitized to NUMA 节点,并有成百上千的客户端连接到每个节点。
请注意,连接数与请求数不同,即。连接主动执行某事,sys.dm_exec_requests。每个请求都需要一个或多个工作人员,工作人员的数量由max worker threads
选项配置。
【讨论】:
我也是 :) 我总是理所当然地认为 32k+ 用户槽永远不会成为问题,但这些细节确实是很好的细节。 谢谢 Nissan,我研究了以下链接,msdn.microsoft.com/en-us/library/ms143432.aspx,我最困惑的是——“每个客户端的连接数”和“用户连接数”有什么区别? 1.我对您的 cmets 感到困惑——“连接主动执行某些事情,sys.dm_exec_requests”。这里的“某物”是什么意思?你的意思是“某事”是“sys.dm_exec_requests”吗? 2.我认为如果不使用MARS,连接数应该和请求数一样。这是正确的理解吗?有cmets吗? 'something' 表示发送到服务器的 SQL 批处理(即“请求”)。只要客户端保持连接打开,连接就始终存在。仅从批处理到达服务器到结果发送回客户端的那一刻才存在请求。请求在 sys.dm_exec_requests 中可见。 定义“活动连接”。 sp_who 将显示没有连接的系统任务(lazuy writer、ghost writer、资源监视器等)。 sys.dm_exec_connections 将显示不执行任何操作的连接。 sys.dm_exec_connections 还显示非 T-SQL 连接,如镜像连接,您必须过滤掉基本 don protocol_type。【参考方案2】:http://msdn.microsoft.com/en-us/library/ms143432.aspx
32,767 是每个数据库的最大限制。
我会这样做:
SELECT
COUNT(*)
FROM
master.dbo.syslockinfo
WHERE
DB_NAME(rsc_dbid) = 'your_database_name'
【讨论】:
我查找活动连接号的方法是否正确?如果是,你的意思是我找到的数字不应该超过 32,767? 我只是想确保我找到的连接号码和你说的一样。 :-) 从您提到的 MSDN 文档中,我最困惑的是——“每个客户端的连接数”和“用户连接数”之间有什么区别? 我刚刚使用两个数据库进行了测试,并且最大。连接数限制为 16K。这意味着这个数字不是每个数据库的,它似乎是每个 SQL 实例的限制。 Eve Online 在其非分片数据库上拥有超过 60,000 名并发用户。以上是关于SQL Server 连接数的任何限制?的主要内容,如果未能解决你的问题,请参考以下文章