Вопрос

Я разрабатываю (относительно небольшой) веб-сайт в ASP.Net 2.0.Я также использую nAnt для простой настройки моего проекта перед доставкой исполняемых файлов.В своем текущем состоянии веб-сайт «предварительно скомпилирован» с использованием

aspnet_compiler.exe -nologo -v ${Appname} -u ${target}

Я заметил, что после перезапуска пула IIS (после простоя или перезапуска) приложению требуется до 20 секунд, прежде чем оно снова будет подключено к сети (и будет достигнуто Application_start).

У меня нет такой проблемы, когда я отлаживаю непосредственно в Visual Studio (запуск занимает 2 секунды), поэтому мне интересно, действительно ли aspnet_compiler такая хорошая идея.

Я не смог найти многого в MSDN.Как вы компилируете свои веб-сайты для производства?

Это было полезно?

Решение

Убедись в том, что:

  1. Вы используете проект веб-приложения, а не проект веб-сайта. В результате для вашего кода будет создан предварительно скомпилированный двоичный файл.
  2. Вы отключили генерацию кода отладки в файле web.config. Я думаю, если это отличается от того, когда вы использовали aspnet_compiler, код может быть перекомпилирован.

Если вы это пробовали, возможно, вы могли бы попробовать запустить ngen поверх вашей сборки, сэкономив таким образом время JIT?

Другие советы

Для максимальной скорости реагирования не позволяйте вашему приложению выключаться.

Первый способ — убедиться, что он невероятно популярен, чтобы всегда кто-то его использовал.

В качестве альтернативы, получение крошечной страницы поддержки активности из другого места в качестве запланированного действия может быть использовано для поддержания «горячего» сайта.

Если ваш веб-сайт скомпилирован как обновляемый, вы увидите несколько файлов .ASPX в своем виртуальном каталоге.Они должны быть скомпилированы при запуске.Это значит, что вы можете войти и изменить сам веб-интерфейс.Это значение по умолчанию как для веб-сайтов, так и для веб-приложений.

Убедитесь, что это установлено в web.config. <compilation debug=false>.В моем случае у меня также есть пакетный файл, который выдает запросы Get для всех основных страниц перед их передачей пользователям (симуляция загрузки страниц).

Главное — убедиться, что пул приложений IIS никогда не отключается.Здесь фактически размещается код.Установите для параметра «Тайм-аут простоя» (в разделе «Дополнительные настройки») какое-то очень большое значение, например 1440 минут (24 часа), чтобы гарантировать, что он не отключится, пока кто-то заходит на ваш сайт один раз в день.

У вас по-прежнему будет время JIT всякий раз, когда вы развертываете новый код или если этот период простоя превышен без какого-либо трафика.

Настройка тайм-аута простоя IIS 7.x

@Саймон:

  • Проект представляет собой веб-приложение.Веб-сайты тогда запускаются медленнее (я понятия не имел, что это имеет место, помимо другой организации кода)?
  • Я проверил, и хотя я редактирую web.config после вызова aspnet_compiler, я не трогаю значение отладки (однако я проверю, что веб-сайт не запускается быстрее, если я не трогаю web.config, просто чтобы сделать конечно)

(И я обязательно посмотрю на ngen, я не знал об этом инструменте.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top