日期:2014-05-18  浏览次数:20443 次

求教,连接字符串中的Max Pool Size最大可设置为多少?
遇到这个错误:

超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

问题描述:我们获取连接超过连接池最大值时产生如上异常。通常连接池最大值为100。当我们获取连接超过最大值时,ADO.NET等待连接池返回连接而超时,这样将抛出如上异常

解决办法:首先要做的是在我们使用连接后立即关闭连接。如果没有关闭连接那么连接将保存到连接池中知道GC来销毁。这种情况下你以为连接池没有到达最大值但实际上连接池已经到达了最大值 其次我们可以通过连接字符串中的Max Pool Size = N;来动态扩大连接池中的连接最大数量。

现在想请教一下,这个N最大可以设置为多少才合适?网上说512的,但还是会出现连接池用完的错误。



------解决方案--------------------
DataReader用了之后没关闭吧!?最好是用官方的sqlHelper 一般是不会出现这中情况的!



------解决方案--------------------
原来的100就很合适。

有问题首先看有没有编程错误(例如该写using的代码来自动关闭连接,这个根本不需要你写什么“关闭连接”语句)。然后看看是不是应该重新设计一些过长时间(例如超过3秒钟)的数据库事务操作。

加大设置,人家是在确定没有编程错误的情况下。如果有编程错误,就算扩大也只是偶尔(比如说10分钟)蒙一下测试人员和老板,实际使用时还是会立刻用完。
------解决方案--------------------
Max Pool Size 默认的就是100 最大为512

出现连接池用完的错误
是因为某些连接没有关闭 或者没有及时关闭 而造成连接池中的连接被消耗尽
如上面题到的DataReader、Connection 等一些常用的数据连接
最好全都写在finally中关闭
------解决方案--------------------
探讨

Max Pool Size 默认的就是100 最大为512

出现连接池用完的错误
是因为某些连接没有关闭 或者没有及时关闭 而造成连接池中的连接被消耗尽
如上面题到的DataReader、Connection 等一些常用的数据连接
最好全都写在finally中关闭

------解决方案--------------------
探讨

Max Pool Size 默认的就是100 最大为512

出现连接池用完的错误
是因为某些连接没有关闭 或者没有及时关闭 而造成连接池中的连接被消耗尽
如上面题到的DataReader、Connection 等一些常用的数据连接
最好全都写在finally中关闭

------解决方案--------------------
探讨
引用:

Max Pool Size 默认的就是100 最大为512

出现连接池用完的错误
是因为某些连接没有关闭 或者没有及时关闭 而造成连接池中的连接被消耗尽
如上面题到的DataReader、Connection 等一些常用的数据连接
最好全都写在finally中关闭


最大值好像是不止512的。。。。但是没有设置那么大过。。。