У меня есть веб-приложение.NET ASP, которое на бэкенде говорит с веб-сервисом ASMX. Мы рассчитали, и среднее время ожидания для начального запроса является 20-ми. Я задаюсь вопросом, существует ли способ, которым я могу отправить веб-сервис до предварительно скомпилированного сервера, таким образом инвертировав потребность в компиляции.
Мы также заметили, что IIS имеет тенденцию перерабатывать свои рабочие потоки, и это также вызывает компиляцию. К самому процессу не получают доступ ужасно часто, но это должно быть намного более быстро, когда это.
Какие-либо мысли?
Заранее спасибо
Обновление: благодаря всем предложениям я попробовал много их, и вот то, что я нашел. Переработайте завершение работы/лужение времени, опасная причина, я не хочу, чтобы потоки просто сидели без дела, ничего не делая. После дальнейшего контроля сайт повышается предварительно скомпилированный, таким образом, мой вопрос состоит в том, почему там начальное вращение время для веб-сервиса?
Прямо сейчас: Склонение к предложению сценария прогрева ниже
Обновление: сервис поражается от веб-сервера на другой машине. Мы видим проблемы с начальным запросом только.
Один альтернативный подход состоит в том, чтобы написать «сценарий разминки», который просто выполняет одну страницу из вашего приложения. Это заставит сервер раскручиваться за вас, и следующий человек получит быстрый удар. Вы также можете настроить запланированный процесс для запуска этого сценария изредка (например, если вы запланируете перезапуск пула потоков в 4 часа утра, запланируйте запуск сценария прогрева на 4:01)
На предыдущей позиции у нас были аналогичные проблемы со службами WCF, когда при первоначальной буферизации мы обошли это, создав простую программу, которая будет вызывать все наши веб-службы после развертывания.
Вы также можете использовать этот же тип программы в качестве службы поддержки активности и просто проверять связь между службами каждые 5-10 минут и т. Д.
Пробовали ли вы использовать aspnet_compiler в папке фреймворка (например,% SYSTEMROOT% \ Microsoft.NET \ Framework \ v2.0.50727)?
Вы можете управлять перезапуском ASP.NET с помощью настроек в пуле приложений. Если он перезагружается чаще, чем настройки, то причиной этого является что-то еще (например, изменения в web.config и т. Д.)
Попробуйте отключить рециклинг приложений в конфигурации страницы или пула приложений в IIS.
IIS 6 (Если я правильно помню): Щелкните правой кнопкой мыши на AppPool -> вкладка "Производительность" -> снимите галочку "Выключать рабочий процесс при простое"
IIS 7.5 Есть свойство (кажется, тоже в настройках appPool), которое выключает AppPool после X минут простоя. Значение 0 равно "никогда не выключать"
Надеюсь, это поможет
Вы должны стремиться выполнить предварительную компиляцию как часть ваших сценариев сборки / развертывания.
Мне кажется довольно глупым наличие активности после развертывания для программного запроса каждого веб-ресурса и запуска согласования.
Ответ Томаса дает компилятор, есть также руководство в MSDN, Как: Предварительно компилировать веб-сайты ASP.NET .
Если вы используете MSBuild, перейдите к AspNetCompiler Task .
(Я, наверное, сделал бы это замечание, но мне еще не разрешено ... недостаточно SO-сок)