诊断SqlConnection泄漏?

3

我在使用一个Web应用程序时遇到了问题,它正在消耗连接池中的所有可用连接。我记得有一些很好的工具用于诊断所有活动连接,但是我现在想不起来了。有哪些好的选项可以诊断这个问题?

4个回答

2

您的应用程序中是否使用了SqlDataReader对象?SqlDataReader对象会一直保持连接状态,直到它被关闭。


1

我建议进行代码审查。我曾经遇到过一个由第三方构建的应用程序类似的情况,通过搜索连接很快就发现它没有使用/finally来确保在异常发生时关闭连接。

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


1

你可以运行sp_who命令来查看SQL服务器中的活动连接,但很可能你没有像其他人建议的那样关闭连接。然而,如果你正在关闭连接,但是立即重新打开它们(比如在循环读取文本文件或其他操作中),你可能会认为自己已经关闭了这些连接,但实际上你可能正在使用所有这些连接(请参考连接池)。如果你发布一下你的代码示例,我相信你会得到更好的答案。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接