【问题标题】:Diagnosing SqlConnection leaks?诊断 SqlConnection 泄漏?
【发布时间】:2009-03-26 20:10:58
【问题描述】:

我遇到了一个 Web 应用程序的问题,它耗尽了连接池中的所有可用连接。我似乎还记得一些用于诊断所有活动连接的好工具,但我是空白。诊断此问题有哪些好的选择?

【问题讨论】:

    标签: .net sqlconnection


    【解决方案1】:

    您是否在应用程序中使用 SqlDataReader 对象? SqlDataReader 对象将保持其连接打开,直到关闭。

    【讨论】:

      【解决方案2】:

      .Net memory profiler of WinDbg with SOS 将允许您追踪谁持有对您的连接对象的引用,使用该信息您应该能够追踪有问题的方法。

      【讨论】:

        【解决方案3】:

        我投票支持代码审查。我曾经在第三方构建的应用程序中遇到过类似的情况,并且搜索连接很快就会暴露它并没有使用/最终确保在发生异常时关闭连接。

        正如 Michael 所指出的,您必须确保数据读取器使用的连接已关闭。您可以指定在阅读器关闭时关闭连接,然后对于这些情况,只需确保数据阅读器已被释放(使用 using(){} )

        【讨论】:

          【解决方案4】:

          您可以运行 sp_who 来查看来自 SQL 服务器的活动连接,但是,您可能没有像其他人建议的那样关闭您的连接。但是,如果您正在关闭连接,但立即重新打开它们(例如在循环中读取文本文件或其他内容),即使您认为正在关闭它们,您也可以使用它们(查看Connection Pooling)。如果您发布代码示例,我认为您会得到更好的答案。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-24
            • 2018-10-24
            • 2012-10-09
            • 2016-06-25
            • 2015-06-08
            • 1970-01-01
            相关资源
            最近更新 更多