最近,碰到Ado.net连接Sql Server2005数据库,报超出连接池最大容量的错误。
这个问题确实碰到不多,也没想过。
对这个概念,以前总是模模糊糊,知道Sql Server2005数据库有连接池这么个概念。
就这个问题,在网上也看了很多相关的网页,有来自www.cnblogs.com,有来自www.msdn.net和www.csdn.net。
总结了一下这些地方提供的经验,包括以下几点解决办法。
1,查看代码中是否有未close的connection。
2,扩大连接池的Min Pool Size 和Max Pool Size。
3,关闭连接池这个功能,即Pooling = false。

虽然有这么些建议,还是自己来测试一下最踏实。
首先连接池这个功能还是不错的,虽然会有一些系统开销,
但对于大访问量来说,提供连接池的功能可以大大减少connection的创建次数,
这样最后还是降低了系统的开销,这样先排除解决办法3。
经过几个分别为1万次循环的连接测试,
分别是:
t1,Min Pool Siz和Max Pool Size默认。 每次open connection ,然后不close()
t2,Min Pool Siz和Max Pool Size默认。 每次open connection ,然后close()
t3,Min Pool Siz =1000,Max Pool Size =2000 ,每次open connection ,然后不close()
t4,Min Pool Siz =1000,Max Pool Size =2000 ,每次open connection ,然后close()

t1,很快报错“超出连接池最大容量”
t2,正常运行
t3,报错“超出连接池最大容量”,比t1报错时间晚
t4,正常运行

这里t2和t4能正常运行,当然这两个测试结果也会有略微不同,
这里先不讨论哪个更好的话题,暂且讨论哪个好与哪个不好。
t1和t3没有正常运行完。

这里可以说明connection 没有close造成了运行失败的。
连接池的数量从哪看?这个我们可以使用SqlServer2005系统表sysprocesses 。
用select * from sysprocesses where dbid= db_id('数据库名') 来查看连接的进程数量,也就是连接池数。
有些可以手动kill一些连接。

下面系统介绍一下 《SQL Server 连接池 (ADO.NET)》
引用[
.NET Framework 开发人员指南
SQL Server 连接池 (ADO.NET)
更新:November 2007

连接到数据库服务器通常由几个需要很长时间的步骤组成。
必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,
必须由服务器对连接进行身份验证,必须运行检查以便在当前事务中登记,等等。

实际上,大多数应用程序仅使用一个或几个不同的连接配置。
这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。
为了使打开连接花费的系统开销最小,ADO.NET 使用称为连接池的优化方法。

连接池使新连接必须打开的次数得以减少。池进程保持物理连接的所有权。
通过为每个给定的连接配置保留一组活动连接来管理连接。每当用户在连接上调用 Open 时,池进程就会查找池中可用的连接。
如果某个池连接可用,会将该连接返回给调用者,而不是打开新连接。
应用程序在该连接上调用 Close 时,池进程会将连接返回到活动连接池集中,而不是关闭连接。
连接返回到池中之后,即可在下一个 Open 调用中重复使用。

只有配置相同的连接可以建立池连接。ADO.NET 同时保留多个池,每种配置各一个。
在使用集成的安全性时,连接按照连接字符串以及 Windows 标识分到多个池中。
还根据连接是否已在事务中登记来建立池连接。

池连接可以显著提高应用程序的性能和可缩放性。
默认情况下,在 ADO.NET 中启用连接池。除非显式禁用,否则,在应用程序中打开和关闭连接时,池进程会对连接进行优化。
还可以提供几个连接字符串修饰符来控制连接池的行为。有关更多信息,请参见本主题后面的“使用连接字符串关键字控制连接池”。]

我这里简单的描述了一下这个论题,
详细内容,参考:
http://msdn.microsoft.com/zh-cn/library/8xx3tyca.aspx
http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection.connectionstring.aspx

 首次放首页,质量欠佳,请海涵。

 

posted on 2009-02-16 23:14  Sail  阅读(2420)  评论(11编辑  收藏  举报

最新资讯 最新游戏 最新网页游戏