【发布时间】:2013-07-24 00:16:02
【问题描述】:
我们有一个 Web 应用程序出现故障,但类型为 System.OutOfMemoryException 的异常。我们正在寻找解决问题的根本原因。
在此之前,我们每周都会执行应用程序池回收,以免发生此事件。
每周回收应用程序池是否会给网站带来更多麻烦?
【问题讨论】:
标签: asp.net sitecore application-pool
我们有一个 Web 应用程序出现故障,但类型为 System.OutOfMemoryException 的异常。我们正在寻找解决问题的根本原因。
在此之前,我们每周都会执行应用程序池回收,以免发生此事件。
每周回收应用程序池是否会给网站带来更多麻烦?
【问题讨论】:
标签: asp.net sitecore application-pool
在您的 Sitecore 站点的 web.config 中,您可以设置 MemoryMonitorHook 以清除一些内存:
<hooks>
<hook type="Sitecore.Diagnostics.MemoryMonitorHook, Sitecore.Kernel">
<param desc="Threshold">800MB</param>
<param desc="Check interval">00:05:00</param>
<param desc="Minimum time between log entries">00:01:00</param>
<ClearCaches>true</ClearCaches>
<GarbageCollect>true</GarbageCollect>
<AdjustLoadFactor>true</AdjustLoadFactor>
</hook>
</hooks>
这基本上告诉 Sitecore 开始清除缓存并在内存使用量超过 800MB 时调用 GC。
这样您就不必手动回收应用程序池。
如果不是 Sitecore 站点,您担心会消耗过多内存,并且因为其他应用程序而不得不回收应用程序池,那么很难判断是否存在并发症。我们也每周回收一次应用程序池,我们不会遇到任何问题。显然,我们是在非工作时间和高峰时间这样做的。
如果其他应用程序占用过多内存,您可以尝试将它们放在不同的应用程序池中,这样就不会干扰网站?
【讨论】: