Вопрос

Что я могу сделать, чтобы гарантировать, что при перезапуске приложения / пула приложений приложение вернется в оперативный режим как можно быстрее?

А еще лучше, есть ли способ предотвратить перезапуск приложения при возникновении обычных триггеров?Например, изменить web.config, global.asax или machine.config?

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

Решение

Функция "автозапуска" появится в версии ASP.NET 4.0 (Скотт Гатри рассказывает об этом), но сейчас это вам не поможет.

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

Небольшая заметка, а проект веб-сайта также может быть build, поэтому ваш App_Code будет пустым, а ваша папка bin будет содержать кучу DLL-файлов (просто используйте Build> Создать веб-сайт).Это определенно ускорит отправку первого запроса на ваш сайт.Я не думаю, что приложение для веб-сайта сработает быстрее, чем предварительно скомпилированный проект веб-сайта, но этим просто легче управлять.

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

Да, переход к веб-приложениям ускорит процесс перезапуска.Еще одна вещь, которую нужно было бы сделать, - это сделать ваш global.asax максимально чистым.

Даже с веб-приложениями сайт выполнит перезапуск, если какой-либо из этих конфигурационных файлов будет изменен или если изменятся сборки в вашем каталоге bin.Ты не можешь остановить это.

Время перезапуска должно быть довольно быстрым - примерно 2-3 секунды.Однако я видел несколько довольно сложных глобальных файлов.asax, которые настраивали некоторые данные на уровне домена, что занимало до 20 секунд.Конечно, они были готовы заплатить эту цену, потому что это сократило часть их обычного времени загрузки страницы с 3 секунд до 0,1 секунды.

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

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

Для проектов веб-приложений вы можете использовать проект веб-развертывания (Ссылка для скачивания VS2010) для предварительной компиляции сайта в библиотеку DLL, аналогичную проекту веб-сайта.Смотрите на Статья ScottGu о том, как использовать WDPs.

У меня похожая проблема в том, что я запускаю сайт с очень высоким трафиком, который получает более 300 запросов в секунду.Перезапуск занимает, по крайней мере, добрых 90 секунд.

Когда я вношу изменение, которое перезапускает сервер, кажется, что перезапуск останавливается до тех пор, пока все старые запросы (некоторые из них выполняются очень долго) не закроются.Я могу сделать перезапуск намного быстрее, уничтожив старый экземпляр w3wp.exe вручную.

Есть ли какой-нибудь способ заставить IIS сразу закрыть все подключения и выполнить жесткий перезапуск?Какая-то настройка в IIS или asp.net для управления этим?

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