0

我有一个网站项目设置,使用Visual Studio 2012中的IIS Express。启动后,它慢慢地在我的开发计算机上占用越来越多的内存。一旦我部署它,它似乎保持相当稳定。显然有一个内存泄漏的地方,但因为它似乎没有发生在现场服务器我不太担心它,(并经过几天的尝试调试它,我仍然没有找到它。)如何限制IIS Express的内存使用量/强制应用程序池recyle

在我的开发计算机上,如果我忘了在一夜之间关闭它,它会吃掉我系统上的所有内存并开始分页到磁盘。当我第二天早上进来时,甚至需要很长时间才能杀死它,因为操作系统也被推入分页内存,并且非常缓慢。

看着https://technet.microsoft.com/en-us/library/cc745955.aspx上的例子,我想我应该可以强制应用程序池在它碰到3gig使用级别时回收自身,以避免出现问题。

我已经到我的C:\ Users \用户名\文档\ IISExpress \设置\ ApplicationHost.config文件并替换第一个应用程序池的下面一节:

<add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true"> 
    <recycling> 
     <periodicRestart privateMemory="600000"> 
      <schedule> 
       <clear /> 
      </schedule> 
     </periodicRestart> 
    </recycling> 
</add> 

不幸的是,当我的项目是快乐地运行它超过600,000KB的限制,我试图在不重新启动的情况下对它施加限制。我已经尝试了内存和privateMemory属性,都无法执行任何操作。

我的项目设置为使用.NET v4.0集成模式,并通过与Microsoft.Web.Administration混淆我很确定我的配置更改正在调整正确的应用程序池,并且回收设置已加载到我的项目(但我对图书馆很陌生,所以我不完全确定)

回答

0

它被设计成一个开发服务器,因此所有的应用程序池设置都被忽略,并且它作为单个实例运行。

如果要测试其他Web服务器功能(如应用程序池),则应切换到完整IIS。