在我们的SharePoint场中,我们的Web前端服务器都处于“待机”模式,这意味着我们的IIS工作进程可用的内存很less。
我们在每个盒子里都有32GB的内存,待机内存会爬到大约28GB,而IIS工作进程只能使用大约2GB。 此外,我们已经看到机器在内存处于待机状态时广泛使用交换文件,所以我开始认为这个处于待机模式的内存正在阻止IIS使用它,迫使它交换到磁盘,导致更多的性能问题。
我使用SysInternals RamMap来识别内存中的内容,并且能够告诉我几乎所有在备用内存中的内容都是“Mapped File”types的。
当我按照文件大小对RamMap文件摘要选项卡下列出的文件进行sorting时,最大的文件(每个大约几百meg)是IIS日志文件和SharePoint日志文件。
我想了解哪个进程将这些文件加载到备用内存以及为什么它们不被释放。 当我做一个iisreset ,它不释放内存。
有任何想法吗?
谢谢!
备用内存是已经被高速caching到内存中的数据,并且自从(尽pipe可能已经被读取)并没有被修改,并且如果需要可以被删除。 它可以在需要时立即释放。 如果物理内存需要其他任何东西,则备用内存将被丢弃,并保留在内存中,以备再次使用,从内存中取出的速度会比磁盘快。
所有的映射文件都由页面文件支持,所以如果一个进程有一个2GB文件的映射视图,它将由2GB的页面文件支持。 因此,如果IIS正在运行,并且有许多日志文件可以写入,那么很可能他们将在页面文件中保留空间。 这不是问题,不会对性能造成不利影响。
Windows通常在使用内存时很好,在其他进程需要时释放内存。 “映射文件”不使用物理内存,而只使用虚拟内存。 进程可以将文件映射到内存以访问文件内容,就好像它在内存中一样 – 而且这种方法比通过传统方法访问文件要快。 但是,这并不意味着整个文件被加载到内存中。
你在机器上看到实际的性能问题吗?
你能从Windows任务pipe理器的“性能”选项卡上发布一些统计信息吗?
2008 R2有一个真正的问题,内存运行待机。 特别是在Itanium盒子上。 “这是一个已知的问题”是我从MS那里得到的答复。