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

ADO.Net连接池已达到最大池大小,.net,sql-server,web-services,ado.net,.net,Sql Server,Web Services,Ado.net,我继承了一个.net/web服务项目,该项目存在严重的连接对象泄漏。奇怪的是,它已经投入生产一段时间了,直到最近才出现问题。我猜垃圾收集器通常会很快地把它们清理干净。一个客户站点上的一个web服务器在负载较重时已开始连接不足 显然,解决方案是修复所有连接泄漏,但这不会很快发生。我甚至无法更改连接字符串中的最大池设置,连接字符串是由应用程序动态构建的。这将需要代码更改,这需要经历一个不快速的过程 在发生代码更改之前,我是否可以在服务器上做些什么来缓解这种情况 为什么只有一个地方会出现问题,一个更小

我继承了一个.net/web服务项目,该项目存在严重的连接对象泄漏。奇怪的是,它已经投入生产一段时间了,直到最近才出现问题。我猜垃圾收集器通常会很快地把它们清理干净。一个客户站点上的一个web服务器在负载较重时已开始连接不足

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

在发生代码更改之前,我是否可以在服务器上做些什么来缓解这种情况

为什么只有一个地方会出现问题,一个更小的地方会出现问题?如果我知道这个问题的答案,我也许能想出一个临时解决办法


是否可能实际问题完全是其他问题,导致了连接池问题?例如,可能是服务器上的负载平衡出现问题或web服务器出现问题。

如果您是在IIS 6或更高版本(我认为)中托管此应用程序,则可以强制应用程序池按计划回收。我必须用一个远程应用程序来实现这一点,该应用程序不会关闭与Oracle数据库的连接;我们将对象放入它们自己的应用程序池中,然后将其设置为每小时循环一次。在我们跟踪问题并发布修复程序的过程中,这项功能已经运行了几个月。

快速修复程序可以用来增加连接字符串上的池大小。添加此属性Max
Pool Size=1000
,使字符串看起来像ie

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

确保任务完成后关闭所有连接。

我想你的意思是“任务完成后关闭所有连接”。