9

我正在为我的应用程序使用 ASP.Net4 MVC2。在应用程序响应之前,第一个使用该应用程序的人通常会经历很长时间的等待。之后,该应用程序非常敏感。如果应用程序空闲 15 分钟,同一个人或下一个使用该应用程序的人将再次经历漫长的等待。看起来应用程序在空闲 15 分钟后编译。有人可以告诉我应该在哪里解决问题吗?谢谢。

4

3 回答 3

8

几乎可以肯定的是,您遇到的是应用程序池回收。确实在池被回收后重新初始化需要一些时间,但它不应该花费那么长时间。“漫长的等待”有多长时间?一秒?一些?在 IIS 中,您可以配置应用程序池回收的频率。对于 IIS 7,右键单击您的应用程序池并选择“高级设置”,然后查看“空闲超时”。您可以考虑增加此值。(或设置为 0 以完全禁用。)

于 2010-10-15T00:41:49.173 回答
6

在开始实施解决方案之前,您需要先准确诊断问题。首先必须验证它是否实际上是应用程序池回收。您可以先将此部分添加到您的 web.config 中:

<healthMonitoring>
      <rules>
        <add name="Application Lifetime Events Default"
             eventName="Application Lifetime Events"
             provider="EventLogProvider"
             profile="Default"
             minInstances="1"
             maxLimit="Infinite"
             minInterval="00:01:00"
             custom="" />
      </rules>
</healthMonitoring>

每当 asp.net 自行回收时,它都会在 Windows 事件日志中记录一个事件。它还会给出回收的原因(例如,有人戳了 web.config 等)。如果回收,那么你需要弄清楚它为什么要回收。是因为 IIS 无论如何都要这样做吗?是不是因为您的应用程序没有正确处理内存并且内存压力导致 asp.net 想要自行回收?这些问题必须首先回答。

首先通过添加到上面的配置和原因来确定它是否是循环的。得到答案后,您可以检查内存等。

于 2010-10-15T03:27:42.397 回答
0

看看 IIS7 应用程序预热扩展。

http://www.iis.net/download/ApplicationWarmUp

于 2010-10-27T14:32:24.057 回答