1

我在这里有一个疑问,我有一个 asp.net MVC Web 应用程序,每天晚上我们都在从 IIS 回收应用程序池。现在,当第二天第一个请求到来时,需要时间来获得响应。

第一次请求需要一些时间,因为未加载应用程序域(应用程序未启动)来启动 Web 应用程序需要一些时间。

现在的问题是及时编译器会再次出现吗?意思是每天早上都需要重新JIT重新编译?

4

2 回答 2

2

是的,应用程序将在回收后再次从 IL 编译为可执行代码:丢弃 appdomain 也会丢失 JITed 本机图像。

例如,您可以通过将不经常更改的依赖程序集放在 GAC 中来避免某些编译,并在它们上使用 NGEN。这可能会加快速度。

于 2010-04-22T19:42:15.687 回答
2

JITting 通常不会对性能造成巨大影响。IIS 进程的冷启动、启动 AppDomain 和从磁盘加载程序集可能会产生更大的影响。此外,您的应用程序可能在 global.asax 文件中有一些自定义启动逻辑(从 db 读取内容)。并且不要忘记您的数据库也可能需要唤醒。

于 2010-04-22T20:42:13.867 回答