如何检测ASP.NET应用程序中的SqlServer连接泄漏?

我目前正在对ASP.net 2.0应用程序进行一些GUI测试。
RDBMS是SQL Server 2005.主机是Win Server 2003 / IIS 6.0。

我没有应用程序的源代码,因为它是由不释放代码的外部公司编程。

我注意到,当我重新启动IIS但应用程序运行良好,但在一些测试后,我已经打开和关闭我的浏览器几个小时,应用程序开始变得越来越慢。我想知道这种行为是否是由于一个坏的关闭连接实践从程序员:我怀疑在数据库上的一个开放的连接泄漏。

我猜.Net垃圾收集器最终会关闭它们,但…可能需要一段时间,不是?

我有SQL Server Management Studio,我从活动监视器注意到有很多连接在数据库上打开。

从上面所说的,这里有一些问题与主要问题相关:

>有什么办法在SQL知道
Server 2005如果连接
打开,因为他们在等待
在连接池中使用或if
他们是开放的,因为他们被使用
应用?
>有人知道好
在线/纸资源在哪里可以
学习如何使用性能
计数器或一些其他类型的工具
以帮助跟踪这些类型
问题?
>如果性能计数器是最好的
解决方案,什么是我的变量
应该看?

解决方法

您可以始终检查来自web.config的连接字符串(主要是如果他们已经激活连接池,如果他们有任何连接限制启用)。

此外,如果使用IIS 6,您可以将Web应用程序设置为使用单独的应用程序池,并设置其他选项以用于回收内存和进程。

关于性能计数器,您可以检查垃圾收集器运行的时间,
应用程序正在使用多少内存等。

如果您可以访问sql server,则可以监视从应用程序创建的连接(为每个已安装的SQL Server实例定义性能计数器)。

MSDN Magazine有一些文章。也可以使用SOS调试库附加到应用程序的过程,并手动检查。

并且,如果你没有源代码,尝试使用Reflector获取应用程序的源(他们将非常有用的调试)

@Later编辑:你可以检查这里question这里stackoverflow.com太

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...