2.百度了一下,发现可能是程序的数据库连接字符串出了问题
自己写了个代码测试一下
class Program
{
private static void Main(string[] args)
{
TestSQLServerConnectionCount()
Console.Read()
}
public static void TestSQLServerConnectionCount()
{
try
{
int maxCount = 40000
string connectionString =
"Data Source=localhostInitial Catalog=EveryDayTestUser Id=saPassword=sa123"
for (int i = 1i <maxCounti++)
{
var db = new SqlConnection(connectionString)
db.Open()
Console.WriteLine("已创建连接对象" + i)
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message)
}
}
}
发现最多只能创建100个,
然后添加了属性Max Pool Size=101,又测了一下,恩可以了
。恩果然是这里,不过。在测试系统的时候发现,有的时候连接数到达40多或60多或80多后就不再增长了,难道说这里有个重复利用数据库连接的机制?
找了一下,发现有个Pooling属性,默认为true,于是加上了这条Pooling=false,运行一下
哇擦,已经超过了32767!!!难道说这个属性可以让连接反复利用,从连接池取出来可以再次使用的连接对象?还是说根本不受连接池的最大限制?
果然,看了一下连接池的运行方式发现:
1、当一个程序执行Connection.open()时候,ADO.net就需要判断,此连接是否支持Connection Pool (Pooling 默认为True)
(1)、如果指定为False, ADO.net就与数据库之间创建一个连接,然后返回给程序。
(2)、如果指定为 True,ADO.net就会根据ConnectString创建一个Connection Pool,然后向Connection Pool中填充Connection。填充多少个Connection由Min Pool Size (默认为0)属性来决定。例如如果指定为5,则ADO.net会一次与SQL数据库之间打开5个连接,然后将4个Connection,保存在 Connection Pool中,1个Connection返回给程序。
2、当程序执行到Connection.close() 的时候。如果Pooling 为True,ADO.net 就把当前的Connection放到Connection Pool并且保持与数据库之间的连接。
同时还会判断Connection Lifetime(默认为0)属性,0代表无限大,如果Connection存在的时间超过了Connection LifeTime,ADO.net就会关闭的Connection同时断开与数据库的连接,而不是重新保存到Connection Pool中。
3、当下一次Connection.Open() 执行的时候,ADO.Net就会判断新的ConnectionString与之前保存在Connection Pool中的Connection的connectionString是否一致。
4、 ADO.net需要判断当前的Connection Pool中是否有可以使用的Connection(没有被其他程序所占用),如果没有的话,ADO.net就需要判断ConnectionString设 置的Max Pool Size (默认为100)
(1)、如果Connection Pool中的所有Connection没有达到Max Pool Size,ADO.net则会再次连接数据库,创建一个连接,然后将Connection返回给程序。
(2)、如果已经达到了 MaxPoolSize,ADO.net就不会再次创建任何新的连接,而是等待Connection Pool中被其他程序所占用的Connection释放,这个等待时间受SqlConnection.ConnectionTimeout(默认是15 秒)限制,也就是说如果时间超过了15秒,SqlConnection就会抛出超时错误。
5、如果有可用的Connection,从Connection Pool 取出的Connection也不是直接就返回给程序,ADO.net还需要检查ConnectionString的ConnectionReset属性 (默认为True)是否需要对Connection 最一次reset。
-------------------摘自《http://www.studyofnet.com/news/637.html 数据库最大连接池max pool size》
不过,为什么系统测试时到了60左右的连接数不再增长了?max
steam错误代码:-100解决方法如下:
1、下载steamcommunity 302 Ver.7工具,可百度搜寻下载地址。
2、下载完成后解压,打开其中的steamcommunity_302_V7.exe运行。
3、先点击“设置”,然后选择节点,点击保存,之后点击“启动服务”即可正常访问Steam社区页面。
扩展资料:
由于某些原因,Steam用户在近期打开Steam社区页面(包括个人资料、社区市场、创意工坊、库存、组、好友列表等页面),无法正常访问并提示以下错误:
错误代码:-100问题。服务器连接失败。服务器可能脱机,或者您当前没有与互联网连接。不同用户可能会出现其他错误代码,比如-101或-118、-105等,提示以上错误代码均可通过以上方法教程解决。
播放出现错误代码是100,怎么回事?如果在用迅雷下载的过程中,有一些不能下载的地址,并提示了错误的代码,从右侧的表格中,大家可以了解到错误代码的解释。
代码解释
10060 连接超时。如果出现这种情况,可以多试几次,或换一个时间重新下载。长时间如此,建议更换下载地址。
10061 服务器拒绝连接。同样需要多试几次,或更换时间下载。长时间出现此问题,建议更换下载地址。
10054 对方服务器主动关闭连接。如果你用迅雷下载任何链接都是如此,那么建议你检查防火墙设置。如果是个别地址,建议更换下载地址。
530 无法登录FTP服务器。出现这种情况,建议更换下载地址。
404 要下载的文件已经不存在。出现这种情况,建议更换下载地址。
403 对方HTTP服务器拒绝请求。出现这种情况,多是由于服务器有人数或其他限制,建议你换个时间再来下载。长时间出现此问题,建议更换下载地址。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)