如何使用 IIS 调试诊断工具解决问题的 IIS 进程中的内存泄漏



Microsoft Internet Information Services (IIS) 中,一个 IIS 进程占用过多的内存时,可能会发生内存泄漏。 Inetinfo.exe、 Dllhost.exe,和 W3wp.exe 是 IIS 进程的示例。 IIS 缓存静态内容和动态内容。 一个 IIS 进程通常使用最多可用的物理内存的 50%。 此内存使用度量值与每个 IIS 进程不于所有 IIS 进程的总数。 可以使用此信息和性能监视器来标识内存问题。



此外时的 IIS 进程占用过多的内存,,可能会出现以下症状:

  • 在 Windows 任务管理器中, 成员分配状况 列可指示在进程的占用过多的内存。
  • 性能监视器中区别增加了 专用字节 计数器和 虚拟字节 计数器, Process 对象的之间。
  • 在 IIS 6.0 的 IIS 进程,请使用最多 1.3 GB 的虚拟内存。 如果内存回收已启用的事件会记录类似于以下内容的:事件类型: 信息

    事件源: W3SVC

    事件类别: 无

    事件 ID: 1077

    Date 的日期:

    Time 的时间:

    用户: N/A

    ComputerName 的计算机:

    说明:

    一个工作进程进程 ID 为"1234"服务应用程序池 DefaultAppPool 已经请求更新因为它已经达到其虚拟内存限制。
  • 如果未启用内存回收的 IIS 进程将使用 1.3 GB 的虚拟内存,并且最终停止响应。 然后,会记录一个事件类似于以下内容的:事件类型: 警告

    事件源: W3SVC

    事件类别: 无

    事件 ID: 1009:

    日期: Date

    时间: Time

    用户: N/A

    ComputerName 的计算机:

    说明:

    意外终止进程提供应用程序池 DefaultAppPool。 进程 ID 是"1234"。 进程退出代码是"0 xc 0xc0000005"。



    有关详细信息,请参阅 http://support.microsoft.com 的帮助和支持中心。
  • 在 IIS 5.0 中的 IIS 进程使用最多 1.3 GB 虚拟内存,并且最终停止响应。 然后,会记录一个事件类似于以下内容的:事件类型: 错误

    事件来源: 服务控制管理器

    事件类别: 无

    事件 ID: 7031

    日期: Date

    时间: Time

    用户: N/A

    ComputerName 的计算机:

    说明:

    IIS Admin 服务服务意外终止。 它已完成这 7 的时间。 0 毫秒采取以下纠正措施: 任何操作。



    有关详细信息,请参阅 http://support.microsoft.com 的帮助和支持中心。



    一个 IIS 进程占用过多的内存时, 使用 IIS 调试诊断工具来解决导致内存泄漏的未处理的内存分配。 您必须将 LeakTrack.dll 文件,然后监视内存泄漏。 一旦在重现此泄漏内存转储文件生成。 内存转储文件包含内存泄漏信息。



    使用 IIS 调试诊断工具,以解决问题的 IIS 进程消耗过多的内存,请按照下列步骤。

    第 1 步: 下载,并安装 IIS Diagnostics Toolkit下列文件是可以从 Microsoft 下载中心下载:

    用于 32 位系统的 IIS Diagnostics Toolkit 收起这个图片展开这个图片 Download the iisdiag.msi package now.(http://www.microsoft.com/downloa ... &DisplayLang=en)

    用于基于 Itanium 的系统的 IIS Diagnostics Toolkit 收起这个图片展开这个图片 (http://www.microsoft.com/downloa ... ;amp;DisplayLang=en)

    步骤 2: 设置内存泄漏问题发生之前记录的性能
    • 单击 开始 ,指向 程序 ,指向 IIS 诊断 ,指向 调试诊断工具 ,然后单击 调试诊断工具 1.1 
    • 单击 工具 ,然后单击 选项和设置 
    • 单击 性能日志 选项卡,单击 启用性能计数器数据日志 ,然后单击 确定 

    请注意 数据采样间隔和时间开始监视依赖重现内存泄漏问题时。 由于日志的大小确保您使用支持专业人员以获取不使该服务器需要的信息。

    步骤 3: 创建一个"内存和句柄泄漏"规则
    • 单击 开始 ,指向 程序 ,指向 IIS 诊断 ,指向 调试诊断工具 ,然后单击 调试诊断工具 1.1 
    • 在 规则 选项卡上单击 添加规则 
    • 单击 内存和句柄泄漏 ,然后单击 下一步 
    • 选择此内存泄漏的进程,然后单击 下一步 
    • 在 配置跟踪持续时间 对话框键入,或在 Warm-Up 时间 框中选择 warm-up 时间。 



      请注意 如果在立即重现该问题单击以选中 开始内存跟踪立即激活规则 复选框。
    • 在 跟踪时间 框键入或选择重现此问题所需的该时间。 请确保 自动创建崩溃规则将 userdump 意外进程上的退出 复选框被选中。



      请注意 指定的时间末尾创建一个转储文件。
    • 单击 下一步 ,然后单击 完成 

    步骤 4: 手动获取数据
    • 单击 开始 ,指向 程序 ,指向 IIS 诊断 ,指向 调试诊断工具 ,然后单击 调试诊断工具 1.1 
    • 单击 进程 选项卡,右键单击所需的进程,然后单击 监视器泄漏 
    • 在重现此泄漏时右键单击从步骤 4b,进程然后单击 创建完整用户转储 

    请注意 请注意状态是活动。 此外, 用户转储 Count 计数器值增加每次在创建内存转储文件。

    步骤 5: 停止内存转储文件完成后,性能日志记录
    • 单击 开始 ,指向 程序 ,指向 IIS 诊断 ,指向 调试诊断工具 ,然后单击 调试诊断工具 1.1 
    • 单击 工具 ,然后单击 选项和设置 
    • 单击 性能日志 选项卡,单击 禁用性能计数器数据日志 ,然后单击 确定 

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

    步骤 7: 如果使用的自定义.dll 文件添加"以进行分析的符号搜索路径"路径或在"调试符号搜索路径"路径
    • 单击 工具 ,然后单击 选项和设置 

    • 符号搜索路径分析 中或在 为调试符号搜索路径 框中,键入适当的路径,,然后单击 确定


标签: windows, iis

相关文章

评论已关闭