如何正确设置 IIS 8 应用程序池内存限制而不触发经常回收?

如何正确设置 IIS 8 应用程序池内存限制而不触发经常回收?

我正在尝试限制 IIS 8.5 中应用程序池使用的内存。我的问题是,如果我设置的限制看起来明显大于典型的内存使用量,它会在几分钟内回收一次。

上下文信息如下。

最初,我在 UI 中设置了 8GB 的​​限制,我的 applicationhost.config 如下所示:

<add name="AppPool" autoStart="true" managedRuntimeVersion="v4.0" startMode="AlwaysRunning">
<processModel idleTimeout="00:00:00" />
<recycling logEventOnRecycle="Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory">
<periodicRestart memory="8192000" time="00:00:00">
<schedule>
<clear />
<add value="01:00:00" />
</schedule>
</periodicRestart>
</recycling>

阅读本文,我意识到该值可能无效,因为它指示的最大值是 4,294,967 KB。因此,我输入了这个值(来自 UI),并且它正确地反映在配置文件中。

如果我删除内存限制,则w3wp进程使用的内存不会超过 2GB,并且不会发生回收。

通过读取事件查看器(来源 = WAS)可以确认回收的原因(达到内存限制)。

问题:如何配置内存限制而不出现回收问题?

相关内容