【问题标题】:ADO.Net Connection pool max pool size reached达到 ADO.Net 连接池最大池大小
【发布时间】:2011-01-24 21:10:46
【问题描述】:

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

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

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

为什么只在一个位置,一个较小的位置会出现问题?如果我知道这个问题的答案,我可能会想出一个临时解决办法。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我认为您的意思是“完成任务后关闭所有连接”。
        猜你喜欢
        • 1970-01-01
        • 2016-12-23
        • 2011-08-13
        • 1970-01-01
        • 2020-01-02
        • 1970-01-01
        • 2013-05-31
        • 2012-07-06
        • 2012-03-05
        相关资源
        最近更新 更多