Asp.net mvc 应用程序每15分钟编译一次

Asp.net mvc 应用程序每15分钟编译一次,asp.net-mvc,iis,application-pool,recycle,user-inactivity,Asp.net Mvc,Iis,Application Pool,Recycle,User Inactivity,我正在为我的应用程序使用ASP.Net4 MVC2。第一个使用应用程序的人通常会在应用程序响应之前经历很长时间的等待。之后,应用程序的响应速度非常快。如果应用程序闲置15分钟,则使用该应用程序的同一个人或下一个人将再次经历长时间等待。看起来应用程序在空闲15分钟后就可以编译了。有人能告诉我应该在哪里解决问题吗?谢谢。几乎可以肯定,你正在经历的是应用程序池回收。确实,在池被回收后重新初始化需要一些时间,但不应该花那么长时间。“长时间等待”需要多长时间?一秒钟?几个?在IIS中,您可以配置应用程序池

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

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

在开始实施解决方案之前,您需要首先准确诊断问题。首先,我们必须验证它是否实际上是一个应用程序池回收。您可以从将此部分添加到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想要自行回收吗?必须首先回答这些问题


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

查看IIS7应用程序预热扩展


我将应用程序池回收设置为每天凌晨1点,但经过一段短暂的空闲时间后,仍会在工作时间内进行。等待时间大约为30秒到1分钟。@user266909,但是您是否调整了“空闲超时”值?我应该在web.config的哪个部分放置该值?谢谢。把它作为一个直接的孩子-