加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer最大连接数

发布时间:2020-12-12 13:41:42 所属栏目:MsSql教程 来源:网络整理
导读:很多做架构设计、程序开发、运维、技术管理的朋友可能或多或少有这样的困惑: ? SQLServer到底支持多少连接数的并发? SQLServer是否可以满足现有的应用吗? 现有的技术架构支持多少连接数的并发? 在硬件性能与网络性能足够理想的情况下理论上可以支持多少
很多做架构设计、程序开发、运维、技术管理的朋友可能或多或少有这样的困惑:

?

  1. SQLServer到底支持多少连接数的并发?
  2. SQLServer是否可以满足现有的应用吗?
  3. 现有的技术架构支持多少连接数的并发?
  4. 在硬件性能与网络性能足够理想的情况下理论上可以支持多少并发连接?
  5. 生产环境中的数据库现在的并发量是多少?
  6. 如何监控现有数据库并发的数量?
  7. 生产环境中的并发量距离理论上的最大并量发还差多少?

为此,我专门写程序做了下测试,利用循环不断的打开连接并保持连接打开不关闭,测试代码如下:

?

?1? using?System;
?2? using?System.Collections.Generic;
?3?
?4? namespace?SQLServerMaxConnectionTest
?5?{
?6????? class?Program
?7?????{
?8????????? static? void?Main( string[]?args)
?9?????????{
10????????????? int?maxCount?=? 40000;
11?????????????List<HotSpotEntities>?collection?=? new?List<HotSpotEntities>();
12????????????? for?( int?i?=? 0;?i?<?maxCount;?i++)
13?????????????{
14?????????????????Console.WriteLine( string.Format( " 成功创建连接对象{0} ",i));
15????????????????? var?db?=? new?HotSpotEntities();
16?????????????????db.Connection.Open();
17?????????????????collection.Add(db);
18?????????????}
19?????????}
20?????}
21?}

?

第一轮的测试结果令我比较吃惊。

?

当创建到101个连接的时候,就无法再创建新连接了。也就是说,如果连接字符串不做任何处理,我们的程序只能够跟SQLServer建立101个连接。测试结果截图如下:

?


?

第二轮测试,启用连接池。

?

在连接字符串中加入代码:

Pooling=true;Max Pool Size=40000;Min Pool Size=0;

连续若干次内存都被耗尽了,不过结果还算欣慰。

?

?

最高记录是29299,很显然不是最高记录,只因为我的笔记本内存有限,所以很难突破。

?

微软对最大连接数的定义


?

微软在MSDN上对最大连接数的定义是:“默认是0,代表不限制,但最大连接数是32767”。 如下图所示:

?

?有兴趣的朋友可以自己编写代码测试、分享一下。

?

如何监测SQLServer的连接数

?

SP_WHO 'loginName'
loginName 是当然登陆Sql的用户名,一般程序里面都会使用一个username来登陆SQL这样通过这个用户名就能查看到此用户名登陆之后占用的连接了。
如果不写loginName,那么返回的就是所有的连接。

既然连接数是可预测、可监测的,那么它就是可度量的,那么我们就可以根据实际情况来评估或测试程序的并发放量了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读