Как я препятствую тому, чтобы IIS компилировал веб-сайт?

У меня есть веб-приложение.NET ASP, которое на бэкенде говорит с веб-сервисом ASMX. Мы рассчитали, и среднее время ожидания для начального запроса является 20-ми. Я задаюсь вопросом, существует ли способ, которым я могу отправить веб-сервис до предварительно скомпилированного сервера, таким образом инвертировав потребность в компиляции.

Мы также заметили, что IIS имеет тенденцию перерабатывать свои рабочие потоки, и это также вызывает компиляцию. К самому процессу не получают доступ ужасно часто, но это должно быть намного более быстро, когда это.

Какие-либо мысли?

Заранее спасибо

Обновление: благодаря всем предложениям я попробовал много их, и вот то, что я нашел. Переработайте завершение работы/лужение времени, опасная причина, я не хочу, чтобы потоки просто сидели без дела, ничего не делая. После дальнейшего контроля сайт повышается предварительно скомпилированный, таким образом, мой вопрос состоит в том, почему там начальное вращение время для веб-сервиса?

Прямо сейчас: Склонение к предложению сценария прогрева ниже

Обновление: сервис поражается от веб-сервера на другой машине. Мы видим проблемы с начальным запросом только.

10
задан xximjasonxx 2 March 2010 в 15:16
поделиться

5 ответов

Один альтернативный подход состоит в том, чтобы написать «сценарий разминки», который просто выполняет одну страницу из вашего приложения. Это заставит сервер раскручиваться за вас, и следующий человек получит быстрый удар. Вы также можете настроить запланированный процесс для запуска этого сценария изредка (например, если вы запланируете перезапуск пула потоков в 4 часа утра, запланируйте запуск сценария прогрева на 4:01)

7
ответ дан 3 December 2019 в 23:12
поделиться

На предыдущей позиции у нас были аналогичные проблемы со службами WCF, когда при первоначальной буферизации мы обошли это, создав простую программу, которая будет вызывать все наши веб-службы после развертывания.

Вы также можете использовать этот же тип программы в качестве службы поддержки активности и просто проверять связь между службами каждые 5-10 минут и т. Д.

1
ответ дан 3 December 2019 в 23:12
поделиться

Пробовали ли вы использовать aspnet_compiler в папке фреймворка (например,% SYSTEMROOT% \ Microsoft.NET \ Framework \ v2.0.50727)?

Вы можете управлять перезапуском ASP.NET с помощью настроек в пуле приложений. Если он перезагружается чаще, чем настройки, то причиной этого является что-то еще (например, изменения в web.config и т. Д.)

2
ответ дан 3 December 2019 в 23:12
поделиться

Попробуйте отключить рециклинг приложений в конфигурации страницы или пула приложений в IIS.

IIS 6 (Если я правильно помню): Щелкните правой кнопкой мыши на AppPool -> вкладка "Производительность" -> снимите галочку "Выключать рабочий процесс при простое"

IIS 7.5 Есть свойство (кажется, тоже в настройках appPool), которое выключает AppPool после X минут простоя. Значение 0 равно "никогда не выключать"

Надеюсь, это поможет

1
ответ дан 3 December 2019 в 23:12
поделиться

Вы должны стремиться выполнить предварительную компиляцию как часть ваших сценариев сборки / развертывания.

Мне кажется довольно глупым наличие активности после развертывания для программного запроса каждого веб-ресурса и запуска согласования.

Ответ Томаса дает компилятор, есть также руководство в MSDN, Как: Предварительно компилировать веб-сайты ASP.NET .

Если вы используете MSBuild, перейдите к AspNetCompiler Task .

(Я, наверное, сделал бы это замечание, но мне еще не разрешено ... недостаточно SO-сок)

3
ответ дан 3 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: