【发布时间】:2017-04-08 00:44:17
【问题描述】:
我有一个网站项目设置,可以使用 Visual Studio 2012 中的 IIS Express。一旦启动,它就会慢慢消耗我的开发计算机上越来越多的内存。一旦我部署它,它似乎保持相当稳定。显然某处存在内存泄漏,但由于它似乎没有发生在实时服务器上,所以我不太担心它,(经过几天的尝试调试,我仍然没有找到它。)
在我的开发计算机上,如果我忘记在一夜之间关闭它,它会耗尽我系统上的所有内存并开始分页到磁盘。当我第二天早上来的时候,它甚至需要很长时间才能杀死它,因为操作系统也被推入分页内存并且非常缓慢。
查看https://technet.microsoft.com/en-us/library/cc745955.aspx 上的示例,我想我应该能够强制应用程序池在达到 3gig 使用级别时自行回收以避免该问题。
我已进入我的 C:\Users\username\Documents\IISExpress\config\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 的限制,我试图在不重新启动的情况下对其施加。我已经尝试了 memory 和 privateMemory 属性,都没有做任何事情。
我的项目设置为使用 .NET v4.0 集成模式,并且通过弄乱 Microsoft.Web.Administration 我相当确定我的配置更改正在调整正确的应用程序池并且回收设置已加载到我的项目中,(但我是那个图书馆的新手,所以我不太确定。)
【问题讨论】:
标签: visual-studio-2012 configuration-files iis-express application-pool recycle