【发布时间】:2010-09-17 18:37:27
【问题描述】:
我目前正在对 ASP.net 2.0 应用程序进行一些 GUI 测试。 RDBMS 是 SQL Server 2005。主机是 Win Server 2003 / IIS 6.0。
我没有应用程序的源代码,因为它是由未发布代码的外部公司编写的。
我注意到当我重新启动 IIS 时应用程序运行良好,但经过一些测试,在我打开和关闭浏览器几个小时后,应用程序开始变得越来越慢。我想知道这种行为是否是由于程序员关闭连接的错误做法造成的:我怀疑这里的数据库存在开放连接泄漏。
我猜 .Net 垃圾收集器最终会关闭它们,但是……这可能需要一段时间,不是吗?
我有 SQL Server Management Studio,我确实从活动监视器中注意到在数据库上打开了很多连接。
综上所述,以下是与主要问题相关的一些问题:
有什么方法可以知道SQL Server 2005(如果连接正常) 开放,因为他们正在等待 在连接池中使用,或者如果 它们是开放的,因为它们被 申请?
有人知道善吗 我可以的在线/纸质资源 学习如何使用性能 计数器或其他类型的工具 帮助追踪这些 问题?
如果性能计数器是最好的 解决方案,我的变量是什么 应该看吗?
【问题讨论】:
-
连接池是否启用?
-
是的。当我遇到类似问题时,我发现它在应用程序中设置为 false。
-
一般是开发者设置为关闭,部署后在web.config/connectionstrings中忘记关闭,常见的部署错误
-
郑重声明,1) 开发人员不应该关闭连接池(为什么无缘无故地让开发环境变得不那么真实?)和 2) 使用连接池和没有连接池一样容易发生泄漏,因此关于连接池的全部观点是完全无关的
标签: asp.net sql-server connection-pooling performancecounter connection-leaks