SQLServer的最大连接数 超时时间已到 但是尚未从池中获取连接
- SQLServer到底支持多少连接数的并发?
- SQLServer是否可以满足现有的应用吗?
- 现有的技术架构支持多少连接数的并发?
- 在硬件性能与网络性能足够理想的情况下理论上可以支持多少并发连接?
- 生产环境中的数据库现在的并发量是多少?
- 如何监控现有数据库并发的数量?
- 生产环境中的并发量距离理论上的最大并量发还差多少?
为此,我专门写程序做了下测试,利用循环不断的打开连接并保持连接打开不关闭,测试代码如下:
using System;
using System.Collections.Generic;
namespace SQLServerMaxConnectionTest
{
class Program
{
static void Main(string[] args)
{
int maxCount = ;
List<HotSpotEntities> collection = new List<HotSpotEntities>();
for (int i = ; i < maxCount; i++)
{
Console.WriteLine(string.Format("成功创建连接对象{0}",i));
var db = new HotSpotEntities();
db.Connection.Open();
collection.Add(db);
}
}
}
}
第一轮的测试结果令我比较吃惊。
当创建到101个连接的时候,就无法再创建新连接了。也就是说,如果连接字符串不做任何处理,我们的程序只能够跟SQLServer建立101个连接。测试结果截图如下:

第二轮测试,启用连接池。
在连接字符串中加入代码:
连续若干次内存都被耗尽了,不过结果还算欣慰。


最高记录是29299,很显然不是最高记录,只因为我的笔记本内存有限,所以很难突破。
微软对最大连接数的定义
微软在MSDN上对最大连接数的定义是:“默认是0,代表不限制,但最大连接数是32767”。 如下图所示:

有兴趣的朋友可以自己编写代码测试、分享一下。
如何监测SQLServer的连接数
loginName 是当然登陆Sql的用户名,一般程序里面都会使用一个username来登陆SQL这样通过这个用户名就能查看到此用户名登陆之后占用的连接了。
如果不写loginName,那么返回的就是所有的连接。
既然连接数是可预测、可监测的,那么它就是可度量的,那么我们就可以根据实际情况来评估或测试程序的并发放量了。
有了这些,相信以上的困惑应该可以解开了吧。
转自:http://www.cnblogs.com/wlb/archive/2012/04/08/2437617.html
SQLServer的最大连接数 超时时间已到 但是尚未从池中获取连接的更多相关文章
- 连接字符串中Min Pool Size的理解是错误,超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
Min Pool Size的理解是错误的 假设我们在一个ASP.NET应用程序的连接字符串中将Min Pool Size设置为30: <add name="cnblogs" ...
- System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
2017/8/15 20:55:21 [AgentPayQuery_205506102_1BBBB]系统异常:System.Data.Entity.Core.EntityException: The ...
- [bug]超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
引言 自己弄了一个小项目——日程管理系统,在初始化日期时,查询了数据库,每个日期就会查询一次数据库,就导致了这个问题. 问题 出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小. Desc ...
- Timeout expired超时时间已到. 达到了最大池大小 错误及Max Pool Size设置
此文章非原创,仅为分享.学习!!! 参考数据库链接串: <add key="data" value="server=192.168.1.123; port=3306 ...
- Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置
参考数据库链接串: <add key="data" value="server=192.168.1.123; Port=3306; uid=root; pwd=ro ...
- error connecting: Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置
[参考]Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置 [参考][数据库-MySql] MySqlConnection error connec ...
- EFCore 调试远程SqlServer数据库提示信号灯超时时间已到
背景 最近在使用EFCore去连接阿里云上面的数据库进行开发的时候,当自己在Debug模式下总是提示下面的报错信息,然后找了好久都没有解决,报错信息如下: an exception has been ...
- 备忘-Sql server Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置
select * from sysprocesses where dbid= db_id('数据库名') 通过此语句可查看目前所有的连接进程 不够了就必须设置Max Pool Size,理论最大值为3 ...
- sqlserver Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应
随着数据库数据的不断增大,查询时间也随之增长.今天在之前一个项目中执行数据库查询超过30秒就报“Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应.”了,网上找了些文章,是在.co ...
随机推荐
- nested pop animation can result in corrupted navigation bar
nested pop animation can result in corrupted navigation barFinishing up a navigation transition in a ...
- LINUX进程控制
1. 引言 一个程序是存储在文件中的机器指令序列.一般它是由编译器将源代码编译成二进制格式的代码.运行一个程序意味着将这个机器指令序列载入内存然后让处理器(cpu)逐条执行这些指令. 在Unix术语中 ...
- 【转】SQL Server T-SQL写文本文件
原文:http://www.nigelrivett.net/SQLTsql/WriteTextFile.html The are several methods of creating text fi ...
- ARM菜鸟:JLINK与JTAG的区别
调试ARM,要遵循ARM的调试接口协议,JTAG就是其中的一种.当仿真时,IAR.KEIL.ADS等都有一个公共的调试接口,RDI就是其中的一种,那么我们如何完成RDI-->ARM调试协议(JT ...
- sftp的安装和使用
http://blog.srmklive.com/2013/04/24/how-to-setup-sftp-server-ftp-over-ssh-in-ubuntu/ In my previous ...
- Centos环境下部署游戏服务器-简介
一.前言 在接触这个操作系统之前我一直使用的是ubuntu和mac os,这次由于游戏是测试版本,没有专业的运维人员去做这件事情,只能我这个稍微懂一点linux的人来做这件事情了.由于涉及到 ...
- CentOS 加载/挂载 U盘
1.以root用户登陆 先加载USB模块 modprobe usb-storage 用fdisk -l 看看U盘的设备 假如U盘是sda1 2.确定在 目录 /mnt 下建立了 文件夹 ...
- [c/c++]指针数组 pk 数组指针
首先强调 指针数组归根结底是个数组:数组指针归根结底是个指针. 数组指针 以int (*int)[10]为例 ()的优先级大于[],因此首先它是一个指针,它指向一个数组,数组的维数是10.因此数组指针 ...
- AppDomain 应用程序域
应用程序域 一.什么是应用程序域? 应用程序域 (application domain) (AppDomain) 一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立(即,从应用程序入口点 ...
- svn版本库包含多个项目 ; git svn clone; 某一个子项目,有多个分支;
情况描述: 公司的svn版本库,包含了多个项目,每个项目对应于1个文件夹 假设版本库名字为Main,其下的项目用 A项目,对应文件夹A B项目,对应文件夹B 通过git svn clone获取了svn ...