达到ADO.Net连接池最大池大小

时间:2011-01-24 21:10:47

标签: .net sql-server web-services ado.net

我继承了一个严重的连接对象泄漏的.net / web服务项目。奇怪的是,它已经生产了很长一段时间,直到最近才出现问题。我猜垃圾收集器通常会很快清理它们。一个客户站点上的一个Web服务器在负载很重的情况下已经开始耗尽连接。

显然,解决方案是修复所有连接泄漏,但这不会很快发生。我甚至无法更改连接字符串中的最大池设置,连接字符串由应用程序动态构建。这将需要更改代码,这需要通过一个不快的过程。

在代码更改发生之前,我可以在服务器上做些什么来缓解这个问题?

为什么这只是一个地方的问题,那个位置较小?如果我知道这个问题的答案,我可以找出一个临时工作。

实际问题是否可能完全是另一回事并导致连接池问题?例如,服务器上的负载平衡可能会出现问题,或者出现问题的Web服务器出现问题。

3 个答案:

答案 0 :(得分:5)

quickfix可以增加连接字符串上的Pool Size。添加此属性Max Pool Size=1000,这样你的字符串就像是。这个

Data Source=server;Initial Catalog=db;User ID=user; Password=pwd;Max Pool Size=1000

答案 1 :(得分:3)

如果您在IIS 6或更高版本中托管此内容(我认为),那么您可以强制应用程序池按计划进行回收。我不得不使用一个没有关闭与Oracle数据库连接的远程应用程序来做到这一点;我们将对象放入他们自己的应用程序池中,然后将其设置为每小时回收一次。这工作了几个月,同时我们追踪了问题并发布了修复程序。

答案 2 :(得分:0)

确保在完成任务后关闭所有连接字符串。