2011-01-24 143 views
5

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

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

有什么我可以做的服务器来缓解这一点,直到代码更改可以发生?

为什么这只是一个位置的问题?如果我知道这个问题的答案,我可能会找出临时工作。

是否有可能实际的问题是完全不同的东西,它会导致连接池问题?例如,服务器上的负载均衡可能会出现问题,或者出现问题的Web服务器出现问题。

回答

3

如果您在IIS 6或更高版本(我认为)托管这个,那么您可以强制应用程序池定期回收。我必须使用远程应用程序来完成此操作,该应用程序不会关闭与Oracle数据库的连接;我们将这些对象放入他们自己的应用程序池中,然后将其设置为每小时回收一次。这个工作了几个月,而我们追踪了这个问题并发布了一个修复程序。

+0

谢谢,我会给它一个镜头。 – dwidel 2011-01-25 14:25:50

5

quickfix可以增加连接字符串的池大小。添加此属性最大Pool Size=1000所以你的字符串看起来像ie。此

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

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

+0

我认为你的意思是“完成任务后关闭所有连接”。 – Germstorm 2015-01-21 13:10:47