w3wp.exe占用内存

在Small Business Server 2011安装中,整个w3wp.exe进程似乎在使用不成比例的大量内存。 SBS开箱即用安装共有7个站点和20个ASP.NET应用程序池(Sharepoint,Exchange,WSUS和SBS特定的东西,如Remote Web Workplace)。

由此产生的十三个w3wp.exe进程往往耗费超过4 GB的服务器的内存随着时间的推移,高峰应用程序池是属于WSUS,在工作集约800 MB的。 通过IIS MMC手动回收应用程序池有助于暂时减less内存使用量(w3wp.exe进程缩减至10 MB,其中一些快速重新生成),但显然不是pipe理员想要整天执行的操作。 我无法find有关SBS预装的应用程序池自动回收的任何build议,所以我不太愿意在生产系统上“只是这样做”。

我在网上关于如何限制这个问题的研究只是抛出了一些post,指出w3wp的内存消耗不会伤害,但是会提高性能,因为内存将在“其他应用程序需要时释放”。 麻烦的是,它不工作:

  • 一个是SBS是一个多angular色服务器,其中一个angular色(主要angular色)是CIFSnetworking存储,它极大地受益于文件系统caching,而文件系统caching又依赖于“免费”的内存,如“任何其他进程方式“ – 几乎没有看到用户和进食记忆的ASP.NET应用程序池是适得其反的
  • 另一件事情是,我仍然不得不在内存不足的情况下看到w3wp实例内存消耗的大幅下降 – 我所看到的是一个小幅下降,远远低于100 MB,而过度交换,反过来又损害了性能

我很lesspipe理IIS或ASP.NET应用程序,因此有关如何有效减less应用程序池的内存需求的任何想法都是受欢迎的。

欢迎来到SBS的美妙世界。 对于RAM = 10GB的build议要求…并且要求至less8GB。 ( 根据微软 )有一个很好的理由。 这不是一个经过精心调整的润滑油机器,它非常马虎,臃肿,并且把太阳下的一切都捆绑在一起。 你可以在这个盒子里扔的内存越多越好。 不幸的是,你最多只限于32GB。 哪个imho是愚蠢的。

如果您怀疑由于软件缺陷导致的内存消耗问题,则可以使用Microsoft DebugDiag 1.2创build完整的内存转储并分析转储以查找常见问题。 如果您认为可能存在内存问题,则需要通过select“Monitor for Leaks”选项来启用泄漏跟踪,并在创build/分析转储之前运行一段时间。

DebugDiag 1.2下载
https://www.microsoft.com/download/en/details.aspx?id=26798

在这里输入图像描述

在这里输入图像描述

在这里输入图像描述

这就是我最终做的事情:

通过在%WINDIR%\Microsoft.NET\Framework\<version>\Config设置web.config中的privateBytesLimit参数,将.NET AppPools的服务器应用程序caching设置为较低的值(5 MB)

  <configuration> <system.web> <caching> <cache privateBytesLimit="5242880" privateBytesPollTime="00:01:00" /> </caching> </system.web> </configuration> 

这有助于将默认池回收设置的内存使用量减less到1 GB以上。

显然,使用“服务器”types的垃圾收集器( <gcServer = "true"> ) 也会导致大量的内存消耗 ,但是看起来,默认情况下<gcServer>设置为false。

你不需要为每个应用程序单独的应用程序池,只是那些不可靠或你想优先考虑的应用程序池。 许多人可以分享(保持不同的.net版本分开)。 然后,您可以更真实地限制应用程序池将使用的内存。 应该不需要每天多次重复循环池。

而且,只有这么多的记忆才能以这种方式被释放出来。 虽然有些应用程序将caching,每个应用程序需要一定的工作内存,这是高度依赖于特定的Web应用程序。 试图限制这个太多会使事情停滞不前。

问题的实质是SBS试图一次做得太多,你需要看看你实际使用的是什么,并关掉你不需要的东西。

但说实话只有11个用户,剩下的内存在哪里呢? 交换和SQL使用光肯定不需要超过12Gb!