博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
亲测SQLServer的最大连接数
阅读量:5050 次
发布时间:2019-06-12

本文共 1353 字,大约阅读时间需要 4 分钟。

很多做架构设计、程序开发、运维、技术管理的朋友可能或多或少有这样的困惑:

 

  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,那么返回的就是所有的连接。

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

 

有了这些,相信以上的困惑应该可以解开了吧。 

 

http://www.cnblogs.com/wlb/archive/2012/04/08/2437617.html

转载于:https://www.cnblogs.com/chixiaojin/p/3762690.html

你可能感兴趣的文章
Hashtable, ArrayList, List, Dictionary学习[转]
查看>>
sqlserver日志的备份与还原
查看>>
从基本功能看,DX11.1相对11的改变,与硬件特性无关
查看>>
PHP时间日期操作增减(date strtotime) 加一天 加一月
查看>>
Baseline
查看>>
tcp断开的4次挥手
查看>>
system.data.sqlite的源代码下载
查看>>
特酷消隐字体
查看>>
通过键盘控制改变物体transform值
查看>>
Django-ModelForm
查看>>
Yii2 Composer
查看>>
C中的流程控制
查看>>
redis总结
查看>>
GridView数据导出到excel
查看>>
python爬煎蛋妹子图
查看>>
linux shell 不同进制数据转换(二进制,八进制,十六进制,base64)
查看>>
在不安装oracle客户端的情况下,使用PLSQL
查看>>
python之做一个简易的翻译器(二)
查看>>
python-appium520-3引入unittest,编写自动化用例
查看>>
2-1:Print date(p28)
查看>>