Мне показалось, что я это понял, но вчера проблема с производством заставляет усомниться в моем понимании.
Мы не выполняем пакетную компиляцию, а разрешаем ASP.NET компилировать страницы по мере их доступа.Обычно это не проблема, потому что мы проводим развертывание по выходным и запускаем тесты, чтобы попасть на все страницы, чтобы все было в понедельник утром.
За исключением развертывания в прошлые выходные.Мы пропустили кучу страниц в нашем тестировании, поэтому все они были скомпилированы вчера в рабочие часы.PerfCounters для #compilations достиг 100 и перезапуск #application составил 8. Но число запущенных приложений также было 8 и обычно равно 1.
Я думал, что ASP.NET перезапустил приложение после того, как был достигнут порог компиляциии «старое» приложение оставалось в живых достаточно долго, чтобы запросы могли завершиться, прежде чем оно было закрыто, чтобы перезапущенная «версия» вступила во владение.Это так?Возможно ли, что старые перезапущенные «версии» приложения все еще работали?
Мы увидели, что помимо слишком большого количества запущенных приложений было много памяти и перебора SQL, как все 8 приложений делали свои вещинезависимо друг от друга.
Мы перезагружались в одночасье и убедились, что все скомпилировано и сегодня утром все работает нормально с одним запущенным приложением.
Есть ли что-то в 4.0, что меняет это поведение?