如何使用 IIS 调试诊断工具疑难解答 IIS 进程中的内存泄漏

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 919790
简介
当 IIS 进程消耗过多的内存,内存泄漏可能会出现在 Microsoft Internet Information Services (IIS)。Inetinfo.exe、 Dllhost.exe 和 W3wp.exe 属于 IIS 进程。IIS 缓存静态内容和动态内容。IIS 进程通常使用最多的可用物理内存的 50%。此内存使用情况统计数据适用于每个 IIS 进程,不到所有的 IIS 进程的总数。您可以使用此信息和性能监视器来识别内存有问题。

此外,当 IIS 进程消耗过多的内存时,可能会出现以下症状:
  • 在 Windows 任务管理器中, 内存使用 列表示进程占用了过多的内存。
  • 在性能监视器中,会增加之间的区别 专用字节数 计数器和 虚拟字节数 计数器的 进程 对象。
  • 在 IIS 6.0 或以上,32 位 IIS 进程使用达 1.3 千兆字节 (GB) 的虚拟内存。如果启用了内存回收,会记录类似于以下事件:

    事件类型: 信息
    事件源: W3SVC
    事件类别: 无
    事件 ID: 1077年
    日期: 日期
    时间: 时间
    用户: 不适用
    计算机: 计算机名
    说明:
    具有进程 id 为"1234"服务应用程序池 '正' 的工作进程已请求回收,因为它已经达到其虚拟内存限制。

  • 如果未启用内存回收,32 位 IIS 进程使用最多 1.3 GB 的虚拟内存,并最终会停止响应。然后,会记录类似于以下事件:

    事件类型: 警告
    事件源: W3SVC
    事件类别: 无
    事件 ID: 1009年
    日期:日期
    时间:时间
    用户: 不适用
    计算机:计算机名
    说明:
    提供应用程序池服务 '正' 的进程意外终止。进程 id 是"1234"。进程退出代码是"0xc0000005"。

    有关详细信息,请在所参阅帮助和支持中心。

更多信息
当 IIS 进程消耗过多的内存时,使用 IIS 调试诊断工具解决导致内存泄漏的未完成的内存分配。您必须插入该 LeakTrack.dll 文件,然后监视的内存泄漏。只要在重现泄漏会生成内存转储文件。内存转储文件包含内存泄漏信息。

若要使用 IIS 调试诊断工具解决 IIS 进程,它会占用过多的内存,请按照下列步骤。

步骤 1: 下载并安装 IIS 调试诊断工具 v1.2

下面是一些可从 Microsoft 下载下载中心:

IIS 调试诊断 v1.2
http://www.microsoft.com/download/en/details.aspx?id=26798 


步骤 2: 设置性能日志记录之前发生内存泄漏

  1. 单击 启动指向 程序指向调试诊断工具然后单击 调试诊断工具 1.2.
  2. 单击 工具然后单击 选项和设置.
  3. 单击 性能日志 选项卡上单击 启用日志记录的性能计数器数据然后单击 确定.
注意 数据采样间隔和开始监视的时间取决于在重现内存泄漏时。由于日志大小,请确保您在工作时与支持专业人员,以获得不急剧的服务器的情况下,您需要的信息。

步骤 3: 创建"内存和处理泄漏"规则

  1. 单击 启动指向 程序指向 调试诊断工具然后单击 调试诊断工具 1.2.
  2. 在上 规则 选项卡上单击 添加规则.
  3. 单击本机 (非-。Net) 的内存和句柄泄漏然后单击 下一步.
  4. 选择具有内存泄漏,进程,然后单击 下一步.
  5. 在中 配置泄漏规则 对话框中,键入或选择预热时间中 预热时间 框中。

    注意 如果立即重现问题,单击以选中 开始跟踪规则处于激活状态时立即的内存 复选框。
  6. 单击 配置... 在用户转储生成部分,并确保 自动创建崩溃规则来获取用户转储进程意外退出复选框处于选中状态。您还可以配置后创建内存转储多少内存使用情况。
  7. 在中 规则 完成框中,键入或选择重现该问题所需的时间。

    注意 在指定的时间结束时,会创建转储文件。
  8. 单击 下一步然后单击 完成.

步骤 4: 手动获取数据

  1. 单击 启动指向 程序指向 调试诊断工具然后单击 调试诊断工具 1.2.
  2. 单击 进程 选项卡上,右键单击所需的然后单击进程 有泄漏的监视器.
  3. 当在重现泄漏的过程从步骤 4b,用鼠标右键单击,然后单击 创建完整用户转储.
注意 请注意状态处于活动状态。此外, 用户转储计数 计数器的值会增加每次创建内存转储文件。

步骤 5: 停止性能日志记录之后内存转储文件已完成

  1. 单击 启动指向 程序指向 调试诊断工具然后单击 调试诊断工具 1.2.
  2. 单击 工具然后单击 选项和设置.
  3. 单击 性能日志 选项卡上单击 禁用日志记录的性能计数器数据然后单击 确定.

步骤 6: 分析内存转储文件

  1. 单击 启动单击 运行键入该调试诊断工具的路径,然后单击 确定.

    注意 默认情况下调试诊断工具位于名 Files\DebugDiag 文件夹中。
  2. 在上 高级的分析 选项卡上单击 添加数据文件.
  3. 找到并单击以分析,然后单击所需的转储文件 打开.
  4. 在上 高级的分析选项卡上单击内存压力分析器然后单击 开始分析.
  5. 查看 Microsoft Internet Explorer 中显示的报告。此报告的副本也存储在 \DebugDiag\Reports 文件夹中。

第 7 步: 如果您正在使用自定义的.dll 文件,添加"符号搜索路径的分析"路径或"符号搜索路径的调试"路径

  1. 单击 工具然后单击 选项和设置.
  2. 在中 用于分析的符号搜索路径 框中或在 对于调试符号搜索路径 框中,键入适当的路径,然后再单击 确定.
高 iis5 iis6 iis 以 iis5.1 为 debugdiag 5.0 6.0 5.1 响应不非悬挂白色沙漏缓慢响应空白旋转性能不响应诊断

警告:本文已自动翻译

属性

文章 ID:919790 - 上次审阅时间:11/17/2011 23:57:00 - 修订版本: 0.1

Microsoft Internet Information Services 6.0, Microsoft Internet Information Services 7.0, Microsoft Internet Information Services 7.5

  • kbinfo kbhowto kbmt KB919790 KbMtzh
反馈