Как вы можете ускорить перезапуск приложения ASP.NET? - PullRequest
3 голосов
/ 28 января 2010

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

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

Ответы [ 5 ]

4 голосов
/ 17 февраля 2010

В ASP.NET 4.0 будет функция «автозапуска» ( Скотт Гатри говорит об этом ), но это вам сейчас не поможет.

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

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

1 голос
/ 28 января 2010

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

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

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

0 голосов
/ 16 октября 2014

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

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

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

0 голосов
/ 31 августа 2011

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

0 голосов
/ 28 января 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...