3

根据这篇有用的文章,我已确认在运行 W2k3 的 IIS 6 服务器上的某些应用程序中存在连接池泄漏。

困难的部分是,我在 6 个应用程序池中为 700 名开发人员编写的 300 个网站提供服务,其中 50% 是 .NET 1.1,它甚至没有在 CLR 数据性能计数器中显示连接。如果一切都是 .NET 2.0+,我可以看到连接不断增长,但我什至对那个纤薄的监控工具都不走运。

我的 300 个网站连接到分布在 Oracle、SQLServer 和异常值之间的大概 100 多个数据库,所以我也无法看到来自数据库端的连接。

现在我最好也是唯一的计划是对我最严重的违规者进行松散的二进制搜索。我将杀死应用程序池并慢慢地从其中删除应用程序,直到我找到在我杀死它们的池时哪些单个应用程序导致最多连接断开。但由于这是一个生产箱,我喜欢继续工作,作为一种追踪方法,这可能需要数周时间。

有谁知道询问 IIS 连接池以了解其来源或所有者的方法?是否有一个我可以在创建时附加的 MSMQ 触发器?我忽略了什么愚蠢的事情?

凯文

(我将包含错误代码以方便其他人通过搜索找到您的答案:异常:System.InvalidOperationException 消息:超时已过期。在从池中获取连接之前已经过了超时时间。这可能是因为所有池连接都在已达到使用和最大池大小。)

4

2 回答 2

1

尝试从 Bill Vaughn 的第一篇文章开始。

于 2008-10-16T03:23:20.347 回答
0

Todd Denlinger 编写了一个很棒的类http://www.codeproject.com/KB/database/connectionmonitor.aspx,它监视 Sql Server 连接并报告在一段时间内未正确处理的连接。将其连接到您的站点,它会在发生泄漏时通知您。

于 2011-09-17T02:49:08.567 回答