很多做架构设计、程序开发、运维、技术管理的朋友可能或多或少有这样的困惑:
  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

亲测SQLServer的最大连接数的更多相关文章

  1. nginx代理https站点(亲测)

    nginx代理https站点(亲测) 首先,我相信大家已经搞定了nginx正常代理http站点的方法,下面重点介绍代理https站点的配置方法,以及注意事项,因为目前大部分站点有转换https的需要所 ...

  2. C#读取Excel设置(亲测可用)

    OpenFileDialog openFD = new OpenFileDialog(); openFD.FileName = ""; openFD.Filter = " ...

  3. ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

    做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path ...

  4. 推荐几个最好用的CRM软件,本人亲测

    CRM是英文Customer Relationship Management 的简写,一般译作“客户关系管理”.CRM最早产生于美国,由Gartner Group 首先提出的CRM这个概念的.20世纪 ...

  5. linux 系统下开机自动启动oracle 监听和实例 (亲测有效)

    [oracle@oracle11g ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listene ...

  6. IntelliJ13+tomcat+jrebel实现热部署(亲测可用)

       网上有很多介绍intellij idea整合jrebel插件实现热部署的文章,但是有的比较复杂,有的不能成功,最后经过各种尝试,实现了整合,亲测可用!步骤说明如下:   一.先下载jrebel安 ...

  7. Linux下通过crontab及expect实现自动化处理 --亲测可用

    #!/usr/bin/expect -fspawn /home/scripts/bckup.shexpect "Enter password: "  send "WWQQ ...

  8. 获取UIColor中的RGB值(本人亲测多个获取RGB值的方法,这个最有效)

    在自己研发的项目个人项目中,碰到一个从颜色中获取RGB值的需求. 在网上找了许久,也有一些方法可以获取RGB值,但不能获取黑白以及灰色的值(他们是非RGB颜色空间,不清楚什么意思,反正亲测确实获取不了 ...

  9. github for windows 安装失败解决方案(亲测)

    早之前就有接触github,也在公司机子上装过,一路下来挺顺畅的.夏老师还纳闷他的机子装不上,我说,有鬼! 然而时隔一个月自己再来装,却在自己的本本上遇到鬼了. 然而网上论坛收了一堆,各种试.果断放弃 ...

随机推荐

  1. chrome安装postman插件

    参考http://www.cnplugins.com/zhuanti/how-to-make-crx-install.html 下载地址:http://www.cnplugins.com/down/p ...

  2. c# sql省市联动

    C# sql省市联动 USE [Book] GO ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ...

  3. Django之QuerySet 查询

    首先来看下如何查询.我们在网页中增加书名的查询链接 后端的查询处理代码:这里由于authors是manytomanyfiled,因此我们这里用r.authors.all().first()来查询符合条 ...

  4. ubuntu - 如何搜索文件?

    1.whereis 文件名 特点:快速,但是是模糊查找,例如 找 #whereis mysql 它会把mysql,mysql.ini,mysql.*所在的目录都找出来.我一般的查找都用这条命令. 2. ...

  5. iOS开发图片与颜色处理工具

    1.根据颜色生成一张图片 /** 根据颜色生成一张图片 @param color 颜色进制 UIColor类型 @return 一张UIImage图片 */ + (UIImage *)createIm ...

  6. 区块链中的密码学(-)区块链中运用最广的散列算法-SHA256算法分析与实现

    在很多技术人员的眼中,区块链并不是一种新的技术,而是过去很多年计算机技术的组合运用.而在这个方方面面技术的运用上,基于密码学的加密算法可以说是区块链各种特点得以表现的根本,一旦目前使用的加密算法被证实 ...

  7. P2597 [ZJOI2012]灾难

    \(\color{#0066ff}{ 题目描述 }\) 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝, ...

  8. BFS【bzoj1667】: [Usaco2006 Oct]Cows on Skates滑旱冰的奶牛

    1667: [Usaco2006 Oct]Cows on Skates滑旱冰的奶牛 Description 经过跟Farmer John长达数年的谈判,奶牛们终于如愿以偿地得到了想要的旱冰鞋.农场上大 ...

  9. 数据结构28:广义表及M元多项式

    广义表,又称为列表.记作: LS = (a1,a2,…,an) ;( LS 为广义表的名称, an 表示广义表中的数据). 广义表可以看作是线性表的推广.两者区别是:线性表中的数据元素只能表示单个数据 ...

  10. C++基础学习10:继承

    继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似. 继承可以理解为一个类从另一个类获取方法(函数)和属性(成员变量)的过程.如果类B继承于类A,那么B就 ...