Назад | Перейти на главную страницу

Использование инициализации приложения с Azure по-прежнему мучительно медленно

Я предполагал, что если я включу прогрев приложения 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 будет опрашивать эту страницу каждые пару минут или около того.