У меня есть сайт SharePoint и пользовательский сайт ASP.NET, оба находятся в IIS 7.0. Я пытаюсь реализовать механизм пробуждения после перезагрузки пулов приложений каждое утро, чтобы кэшировать пулы приложений и избежать задержки первого обращения, с которой мы все так хорошо знакомы. Я пошел дальше и запланировал задачу в планировщике задач, используя приведенный ниже скрипт, и если я повторно использую пулы приложений и запускаю задачу, сайты сразу же появляются. Я моделировал это несколько раз (даже запустив сценарий через командную строку, и сценарий определенно, похоже, будит сайты). Однако, когда я позволяю задаче выполняться по ее расписанию (на 4 часа ночи), а затем попадаю на сайт ASP.NET в 8 часов утра, для пробуждения сайта при первом обращении требуется 10-15 секунд. Похоже, что сайты SharePoint быстро появляются по утрам. Я попытался обновить параметр IIS для тайм-аута простоя до 24 часов (по умолчанию это 20 минут), чтобы увидеть, перерабатываются ли пулы приложений снова даже после пробуждения для сайта ASP.NET. Кроме того, инициализация приложения недоступна до версии 7.5 (и в этом сценарии мы застряли на версии 7.0). Какие-либо предложения?
Примечания. Сайты SharePoint перерабатываются в 3:30. Сайт ASP.NET перезапускается в 3:30. Задача пробуждения запускается в 4 утра.
Скрипт пробуждения:
# urls to wakeup
$urls = "<url-1>",
"<url-2>"
try
{
# loop through urls
foreach($url in $urls)
{
Write-Host "$url waking up..." -foreground yellow
# wakeup url by fetching page
$client = new-object system.net.WebClient
$client.UseDefaultCredentials = $true
$null = $client.OpenRead($url)
$client.Dispose()
Write-Host "$url now awake..." -foreground green
}
}
catch
{
# exception thrown
Write-Error $_
throw $_
}
Самый простой способ немедленно решить эту проблему - это, вероятно, просто увеличить интервал, в котором запускается ваш сценарий, примерно до каждого часа или каждые полчаса.
Но это не удовлетворяет потребности понять, что происходит на самом деле. К сожалению, у меня нет под рукой IIS 7.0 или виртуальных машин. Но моя интуиция подсказывает, что в настройках пула приложений все еще есть что-то, что могло бы заставить их замедляться. Другая возможность - это сбой одного или нескольких приложений ASP.NET.