使用Azure进行应用程序初始化仍然非常缓慢

我的假设是,如果我在Azure中启用了IIS8应用程序热备份,那么我的所有站点都可以立即加载,但事实并非如此

所以,基本上,我已经打开preloadEnabled并将preloadEnabled设置为AlwaysRunning ,使用:

 public class WebRole : RoleEntryPoint { public override void Run() { using (var serverManager = new ServerManager()) { foreach (var application in serverManager.Sites.SelectMany(c => c.Applications)) { application["preloadEnabled"] = true; } foreach (var appPool in serverManager.ApplicationPools) { appPool["startMode"] = "AlwaysRunning"; } serverManager.CommitChanges(); } } } 

我也使用下面的启动任务禁用了IIS应用程序池的回收和周期性的IIS重启:

 %windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00 %windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:00:00:00 

在我的每个网站中,我已经把我的web.config中的以下内容:

 <system.webServer> <applicationInitialization skipManagedModules="true"> <add initializationPage="/" /> </applicationInitialization> </system.webServer> 

但是, 我所有的网站仍然需要30秒的第一击 。 如果我点击任何网站之前,远程进入机器,我可以看到所有的设置都在IIS中应用。 我还可以看到,这些网站在60-80MB的内存中闲置(暗示它们已经被预加载)。

我的问题是,这是预压得到吗? 当然,它意味着更快? 我期待的延迟是最小的,也许2或3秒的第一次加载?

我认为你已经安装了应用程序初始化模块,它不包含在默认的IIS8安装中?

看看这个伟大的职位 ,如何让这一切都运行起来,希望可以解决你的问题。

虽然不直接回答您的问题,但您可以使用Azure中的新监视function来保持网站的正常运行。

如果您查看云服务下的pipe理门户,则有一个标有“Web端点状态”的部分。 如果您设置了该值,那么Azure将每隔几分钟轮询该页面。