【问题标题】:Cannot monitor iisprocess for leak in Debug Diagnostic Tool无法在调试诊断工具中监视 iisprocess 是否泄漏
【发布时间】:2010-10-06 11:37:33
【问题描述】:

我有一个消耗大量内存的 ASP.NET 应用程序。因此,我想使用调试诊断工具来尝试搜索是否存在泄漏或其他问题。

在进程选项卡上的 DebugDiag 中,我右键单击 w3wp.exe 进程,我得到的唯一选项是:

终止进程
复制

只有在某些流程上我才能获得更多选择:

监控泄漏
创建完整的用户转储

这是为什么?和worker进程的身份有关系吗?

有人可以帮我解决这个问题,以便我可以调试我感兴趣的工作进程吗?

【问题讨论】:

  • 什么版本的 IIS?这是 32 位还是 64 位?
  • 这是一个 64 位的 windows 7。在 windows 功能中,我检查了 IIS 6 管理兼容性。如果我在 IIS 管理器中单击 about,我可以看到它是 6.1 版

标签: asp.net iis monitoring


【解决方案1】:

假设您使用的是 DebugDiag 1.1。您需要使用与进程架构匹配的正确版本(有 32 位和 64 位版本)。

要检查您的应用程序池的工作进程是 32 位还是 64 位,请访问:

Control Panel -> Administrative Tools -> Internet Information Services (IIS) Manager

不要打开Internet Information Services (IIS) 6.0 Manager

为您的网站打开Advanced Settings(链接位于左侧的“操作”窗格中)。记下Application Pool 名称,然后单击“取消”。

单击左侧导航树窗格中的Application Pools 节点并右键单击上述应用程序池,选择Advanced Settings

如果应用程序池是 32 位,则设置 Enable 32-bit Applications 将设置为 true,否则如果为 false,则池将在 64 位模式下运行。

如果应用程序池在 64 位模式下运行,则需要下载并安装 64 位版本的 DebugDiag。

当您运行 32 位 DebugDiag 时,进程选项卡上的“32 位”列将显示“是”以指示进程是 32 位的。只有这些进程才会有“监控泄漏”等上下文菜单选项。

有关更多信息,请参阅 Tess Ferrandez 的博客:

Capturing memory dumps for 32-bit processes on an x64 machine

如果您可以在 32 位模式下重现您怀疑的内存泄漏,则只需将应用程序池切换到 32 位并使用 32 位版本的 DebugDiag。不幸的是,32 位和 64 位版本不能共同驻留在同一台机器上。

更新:

DebugDiag 1.1 x64 仅支持 分析特征。有一个新的 测试版允许所有 32位的功能 版本。虽然不可用 您可以直接从 他们的支持团队,请参阅以下内容 更多信息的链接:

Debug Diag 1.2 (Beta)

【讨论】:

  • 首先我从这个页面下载了 64 位版本:microsoft.com/downloads/en/… 但是这个版本是一个仅限分析的版本,我只有 GUI 中的分析选项卡,没有其他两个。这就是我下载 32 位版本的原因,因为我知道它应该可以在 64 位机器上运行。是否有可以调试进程的 64 位版本?
  • @John - 查看我更新的答案。我向该博客文章中提到的团队发送了电子邮件,他们在几分钟内回复了我,并提供了下载链接。
  • 非常感谢凯夫。它工作得很好。现在我只需要学习阅读这些报告,但这是另一个问题 =)。
猜你喜欢
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2018-10-24
相关资源
最近更新 更多