开发者社区 问答 正文

如何调试windows 内存使用率高(pool leak)

问题描述:
如何调试windows 内存使用率高(pool leak)
解决过程:
Windows 2008 R2 内存使用率高,将近90%, 没有发现可疑进程。 这种情况下,可以使用rammap 以及 poolmon 进行深度调试
排查过程
1.    内存使用率高90%左右,但是没有发现异常进程



2. 使用rammap 发现pool page 使用率高,应该是pool leak 问题

Rammap 下载以及使用说明: https://technet.microsoft.com/en-us/sysinternals/rammap.aspx


展开
收起
xiaoqb 2016-01-26 10:06:14 9823 分享 版权
阿里云 AI 助理回答

解决Windows 2008 R2内存使用率高(Pool Leak)问题的详细步骤

问题描述与背景

您遇到的问题是Windows 2008 R2服务器的内存使用率异常升高至90%左右,且通过常规手段(如任务管理器)未发现明显占用内存的异常进程。这种情况下,高度疑似存在内核级别的内存泄漏,特别是非页面缓冲池或页面缓冲池的泄漏,即Pool Leak。

监控指标与解释

  • 内存使用率:整体衡量系统内存使用情况,此处高达90%,表明内存资源紧张。
  • Pool Page使用率高:Rammap工具中显示的Pool Page部分异常增高,指示可能为内核缓冲池中的内存泄漏。

排查步骤

  1. 使用RAMMap定位内存占用

    • 下载并安装RAMMap工具。
    • 运行RAMMap,它会提供一个全面的内存使用视图,特别关注“Pool”部分,以识别是否存在特定类型的内存池消耗过大。
    • 根据RAMMap的报告,确认Pool Page占用过高,这是继续深入调查的方向。
  2. 利用Poolmon追踪具体Pool Tag

    • 下载并使用微软提供的另一款工具Poolmon来进一步定位问题。
    • 运行Poolmon后,查看哪些Pool Tag占用内存最多,这些Tag通常对应着具体的驱动程序或系统组件。
    • 记录下占用最高的几个Pool Tag名称,例如“IoDn”。
  3. 定位导致泄漏的文件

    • 使用命令行执行以下命令,将之前记录的Pool Tag作为参数,查找对应的.sys文件:
      findstr /m /1 PoolTagName *.sys
      

      其中PoolTagName替换为实际找到的异常Pool Tag,比如“IoDn”。

  4. 分析与修正

    • 根据上述命令的输出,确定导致泄漏的具体应用程序或驱动程序。
    • 对应地,检查该应用或驱动是否有更新版本,或者联系供应商寻求解决方案。
    • 必要时,考虑禁用或替换引起问题的软件或驱动。

注意事项

  • 在进行上述操作前,建议先备份重要数据,以防操作不当导致的数据丢失。
  • 确保在排查和修复过程中,有充分的系统知识或专业人员指导,避免误操作对系统稳定性造成影响。
  • 考虑到安全因素,下载任何第三方工具时,请确保来源可靠,避免引入额外的安全风险。

通过上述步骤,您可以系统地诊断并尝试解决Windows 2008 R2内存使用率高的问题,尤其是涉及到Pool Leak的情况。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答