启用IIS 7.5自动启动后,第一个请求仍然很慢

我在我的应用程序池中设置了startMode =“AlwaysRunning”属性,并在IIS配置中为我的应用程序设置了serviceAutoStartEnabled =“true”属性.我甚至设置了serviceAutoStartProvider,可以看到正在执行“预热”代码.我也可以看到w3wp进程在iisreset之后自动启动.但是,对我的ASP.NET MVC应用程序的第一个请求与没有自动启动一样慢.如果没有探查器,我是否缺少任何一点或以任何方式轻松调试?

此功能是否会影响首次请求性能?考虑到工作进程已准备就绪,.NET appdomain甚至所有.NET程序集都已加载,实际上第一个请求的大部分工作要做什么?

最佳答案 我最近一直在研究这个问题.

据我所知,autoStart功能将导致您的IIS工作线程(默认情况下,只是池的线程)在第一个请求之前进行JIT编译.

但是,编译的内容似乎只是大量的程序集和依赖项,但不一定是任何方法.

当第一个请求发生时,您编写的方法第一次被调用,JITer对那些尚未编译的方法执行最终编译.

autoStart的好处似乎是让.Net可以预先完成90%的工作,但是当第一个请求发生时,最后10%仍然需要支付,而那些尚未访问的方法是第一次运行.

点赞