Я предполагал, что если я включу прогрев приложения IIS8 в Azure, все мои сайты будут загружаться практически мгновенно, это не вариант.
Итак, в основном я включил preloadEnabled
и установите startMode
к 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-80 МБ памяти (подразумевая, что они были предварительно загружены).
Мой вопрос: насколько хороша предварительная загрузка? Конечно, это должно быть быстрее? Я ожидал, что задержка будет минимальной, может быть, 2 или 3 секунды при первой загрузке?
Я так понимаю, вы действительно установили модуль инициализации приложения, который НЕ входит в стандартную установку IIS8?
Проверять, выписываться этот отличный пост о том, как все это запустить и, надеюсь, решить ваши проблемы.
Не отвечая напрямую на ваш вопрос, вы можете использовать новые функции мониторинга в Azure, чтобы ваш сайт постоянно работал.
Если вы посмотрите на портал управления под облачной службой, там есть раздел, озаглавленный «Статус конечной веб-точки». Если вы установите это значение, Azure будет опрашивать эту страницу каждые пару минут или около того.