Windows Server 2008 R2 上的“待机”内存负载

Windows Server 2008 R2 上的“待机”内存负载

在我们的 SharePoint 场中,我们的 Web 前端服务器都具有处于“待机”模式的大量内存,这意味着我们的 IIS 工作进程可用的内存非常少。

我们每个机器都有 32 GB 的 RAM,待机内存会逐渐增加到大约 28 GB,而 IIS 工作进程似乎只使用了大约 2 GB。此外,我们发现机器在内存处于待机状态时大量使用交换文件,因此我开始认为处于待机模式的内存阻止了 IIS 使用它,迫使它交换到磁盘,从而导致更多性能问题。

我用了SysInternals 内存映射来识别内存中保存的内容,它可以告诉我备用内存中的几乎所有内容都是“映射文件”类型。

当我按文件大小对 RamMap 中文件摘要选项卡下列出的文件进行排序时,最大的文件(每个大约几百兆)是 IIS 日志文件和 SharePoint 日志文件。

我想了解哪个进程正在将这些文件加载​​到备用内存中以及为什么它们没有被释放。当我执行 时iisreset,它不会释放内存。

有任何想法吗?

谢谢!

答案1

备用内存是已缓存到内存中的数据,此后从未被修改过(尽管可能被读取过),并且可以在需要时删除。它可以根据需要立即释放。如果需要将物理 RAM 用于其他用途,则备用内存将被删除,它会保留在内存中以备不时之需,而且从内存中获取比从磁盘获取更快。

所有映射文件都由页面文件支持,因此如果某个进程具有 2 GB 文件的映射视图,则它将由 2GB 的页面文件支持。因此,如果 IIS 正在运行并且有许多日志文件打开以供写入,则它们很可能会在页面文件中保留空间。这不是问题,也不会对性能产生不利影响。

答案2

Windows 通常擅长在内存可用时使用内存,并在其他进程需要时释放内存。“映射文件”不使用物理内存,而只使用虚拟内存。进程可以将文件映射到内存,以访问文件内容,就像它在内存中一样 - 这种方法比通过传统方法访问文件更快。但同样,这并不意味着整个文件都加载到内存中。

您是否发现机器上存在实际的性能问题?

您能从 Windows 任务管理器的“性能”选项卡中发布一些统计数据吗?

答案3

2008 R2 确实存在内存耗尽而进入待机状态的问题。尤其是在 Itanium 机箱上。我从 MS 那里得到的答复是“这是一个已知问题”。

相关内容