奇怪的异常,200分求解

xulovewei 2006-01-02 09:09:05
服务器的操作系统为win2000 server(英文版),web.config数据库连接字如下:
Server=192.168.100.100;Database=db;User Id=sa;password=111;
或者
Server=192.168.100.100;Database=db;User Id=sa;password=111;min pool size =2;max pool size=200;

为什么总是收到
The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached
的异常,求解决办法
...全文
177 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
只看远方 2006-01-07
  • 打赏
  • 举报
回复
pool size 设置大点,使用conn 注意关闭
jeannie94621 2006-01-06
  • 打赏
  • 举报
回复
是oracle数据库吧,先看数据库进程是不是很多,那就是没有关闭数据库的连接,
还有可能是数据库的问题,有可能pool size 没有设置好.去服务器看看oracle参数的设置
sekone 2006-01-06
  • 打赏
  • 举报
回复
一般就是sqldataReader忘记关闭 了
Darwin000 2006-01-06
  • 打赏
  • 举报
回复
因为连接没有及时关闭,造成连接池满。
MS SQL的最大连接数是100,当MS SQL的数据库连接达到100时,就会发生这样的异常。
你可以检查:
是否有Connection对象没有关闭。
一个Connection在Open()后如果没有Close()就再次Open()的话,是会增加一个连接数的,如果是使用的sqlhelp类,你虽然关闭了连接,但实际上没有关闭,要仔细检查每一个连接,也可以sp_who

最好是用using(SqlConnection conn=new SqlConnection("连接字符串"))
{
try
{}
catch()
{}
finally
{
conn.close();
}
}
这样的格式
starfire21 2006-01-06
  • 打赏
  • 举报
回复
连接池满,没有释放
卧_槽 2006-01-06
  • 打赏
  • 举报
回复
连接池超时,大部分是因为使用SqlHelper造成的,当大量连接建立的时候,SqlHelper一般都会挂,不止是SqlDataReader没有显示的close
xwjss 2006-01-06
  • 打赏
  • 举报
回复
max pool size=200;设置了没用,MS SQL的最大连接数是100,进sqlserver 执行
sp_who,可以看到哪些连接没释放,仔细检查SqlDataReader关闭的问题
gulx 2006-01-02
  • 打赏
  • 举报
回复
因为连接没有及时关闭,造成连接池满。
MS SQL的最大连接数是100,当MS SQL的数据库连接达到100时,就会发生这样的异常。
你可以检查:
是否有Connection对象没有关闭。
一个Connection在Open()后如果没有Close()就再次Open()的话,是会增加一个连接数的。
happyamei 2006-01-02
  • 打赏
  • 举报
回复
学习中.......
狂顶了
zbyh331 2006-01-02
  • 打赏
  • 举报
回复
连接池是为每个唯一的连接字符串创建的。当创建一个池后,将创建多个连接对象并将其添加到该池中,以满足最小池大小的要求。连接根据需要添加到池中,但是不能超过指定的最大池大小(默认值为 100)。连接在关闭或断开时释放回池中。
连接池进程通过在连接释放回池中时重新分配连接,来满足这些连接请求。如果已达到最大池大小且不存在可用的连接,则该请求将会排队。然后,池进程尝试重新建立任何连接,直到到达超时时间(默认值为 15 秒)。如果池进程在连接超时之前无法满足请求,将引发异常。
警告

我们建议您在使用完连接时一定要关闭连接,以便连接可以返回池。要关闭连接,可以使用 Connection 对象的 Close 或 Dispose 方法,也可以通过在 C# 的 using 语句中或在 Visual Basic 的 Using 语句中打开所有连接。不是显式关闭的连接可能不会添加或返回到池中。例如,如果连接已超出范围但没有显式关闭,则仅当达到最大池大小而该连接仍然有效时,该连接才会返回到连接池中。有关更多信息,请参见 Visual Basic 的using 语句(C# 参考)或如何:释放系统资源。
zbyh331 2006-01-02
  • 打赏
  • 举报
回复
名称 默认值 说明
Connection Lifetime 0 连接返回到池中后,创建时间将与当前时间进行比较,如果时间跨度(秒)超过 Connection Lifetime 指定的值,该连接将被破坏。在聚集配置中可以使用它来强制在运行服务器和刚联机的服务器之间达到负载平衡。
如果值为零 (0),则将使池连接具有最大的超时期限。
Enlist 'true' 当为 true 时,如果存在事务上下文,池管理程序将自动在创建线程的当前事务上下文中登记连接。
Max Pool Size 100 池中允许的最大连接数。
Min Pool Size 0 池中维护的最小连接数。
Pooling 'true' 当为 true 时,将从相应的池中取出连接,或者在必要时创建连接并将其添加到相应的池中。
zbyh331 2006-01-02
  • 打赏
  • 举报
回复
The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached

200个连接池足够了 问题是看看代码CONN是否及时CLOSE
另外你的代码写错了min pool size =2;max pool size=200;不认,连接池代码区分大小写的
luckyprg 2006-01-02
  • 打赏
  • 举报
回复
因为连接没有及时关闭,造成连接池满。
MS SQL的最大连接数是100,当MS SQL的数据库连接达到100时,就会发生这样的异常。
你可以检查:
是否有Connection对象没有关闭。
一个Connection在Open()后如果没有Close()就再次Open()的话,是会增加一个连接数的。
「已注销」 2006-01-02
  • 打赏
  • 举报
回复
检查下哪些地方的连接是否已经关闭了

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧