我以为我理解了这一点,但昨天的生产问题让我质疑我的理解。
我们不批量编译,而是让ASP.NET在访问页面时对其进行编译。这通常不是问题,因为我们在周末进行部署并通过测试运行以查看所有页面,因此星期一早上一切都很笨拙。
除了上周末的部署。我们在测试中错过了一堆页面,因此它们都是在昨天的生产时间内编译的。 #compilations的PerfCounters达到100,#application restarts为8.但运行的应用程序数量也是8,通常只有1。
我认为ASP.NET在达到编译阈值后重新启动了应用程序,并且它使“旧”应用程序保持足够长的时间以完成请求,然后关闭它以重新启动'版本'来接管。是这样吗?应用程序的较旧重启“版本”是否仍然可以运行?
我们看到,除了运行的应用程序太多外,还有很多内存和SQL抖动,就像所有8个应用程序独立完成它们一样。
我们在一夜之间重新启动并确保所有内容都已编译完毕,今天早上一切运行正常。
4.0中是否存在改变此行为的内容?