诊断 2008R1SP2 上的 poolmon.exe 中的“文件”标记内存泄漏

诊断 2008R1SP2 上的 poolmon.exe 中的“文件”标记内存泄漏

我们的许多 2008R1SP2 文件服务器都存在内存泄漏问题。poolmon.exe 中的“文件”非分页内存标签会泄漏,直到共享文件夹不再可用,然后 RDP 随之关闭(我们必须通过控制台重新启动)。有时这种泄漏量超过 1.5G/天。

池妖

拉姆地图

如果需要删除某些内容,我需要有很好的预感,并且需要批准大量的 CM。自此情况发生以来,唯一的变化是添加了 McAfee Agent 5.0.2.132,但是带有 McAfee 的 AV 尚未以任何方式运行(它正在为尚未实施的迁移做准备)。我意识到 poolmon 屏幕中的 MFEm 标签是 McAfee,但在大多数泄漏服务器中,它在列表中并不靠前。

此外,追溯到 NIC 驱动程序(iANS 或 BCM8)的标签通常位于非分页字节排序的前 5-6 位。我们尚未尝试与网络隔离,但也许这是一个好主意。

我理解的下一个合乎逻辑的步骤是运行 xperf / Windows Performance Toolkit,但这似乎需要 .NET 4.5,由于多种原因我们无法安装它。

1) 有人知道哪里可以下载独立的旧版本 xperf,与 2008R1SP1 兼容(甚至仅限 CLI)?

2)假设#1不可用(或充其量是一个糟糕的想法),是否有其他实用程序可以以类似的方式跟踪和追踪池标签?

3)您有什么建议可以给我指明正确的方向吗?

答案1

这可能不是一个直接的答案,但正如我看到的,你的“元文件”真的很高,有一个私人的解决办法。

当系统文件缓存占用大部分物理 RAM 时,您会遇到应用程序和服务的性能问题 -https://support.microsoft.com/en-us/kb/976618

那里解释道:http://blogs.technet.com/b/mspfe/archive/2012/12/06/lots-of-ram-but-no-available-memory.aspx

答案2

我们最终向 Microsoft 支付了支持费用。工程师能够将泄漏追溯到 McAfee 代理。在我们的 2008 SP2 服务器上安装以下热修复程序(根据 Microsoft)解决了非分页池泄漏问题,而无需卸载 McAfee 代理:KB2029048、KB2961072、KB3019168。我希望这对遇到此问题的其他用户有所帮助。

感谢所有在这里花时间提供帮助的人。

编辑:如果您好奇的话,由于政治原因,我们无法在故障排除期间禁用 McAfee 代理。一家大公司内有多个 IT 部门,利益重叠,有些自尊心很脆弱。现在,证据至少不言而喻。 ;-)

答案3

较高的 Meta 缓存 + “File” 使用率表明程序执行了大量 FileIO 操作。您必须使用xperf 来追踪导致使用的原因. 安装Windows SDK 中的 WPT(8.1 版本也适用于 Win7/2008R2,但不适用于较旧的 Server 2008)(以下是MSI 安装程序如果你不想安装.Net Framework 4.5),请打开以管理员身份运行 cmd.exe然后运行:

xperf -on PROC_THREAD+LOADER+POOL -stackwalk PoolAlloc+PoolFree+PoolAllocSession+PoolFreeSession -BufferSize 2048 -MaxFile 2048 -FileMode Circular && timeout -1 && xperf -d C:\poolusage.etl

捕获 2-3 分钟的池使用率增长。使用 WPA.exe 打开 ETL(在安装了 .net 4.5 的第二台 PC 上),将池图表添加到分析窗格。

按照图中所示顺序排列各列,加载符号在 WPA.exe 内部并展开您在 poolmon 中看到的“文件”标签的堆栈。

在此处输入图片描述

此处File使用的标签是定位32它扫描文件系统来建立搜索索引。

相关内容