В чем разница между DefaultAppPool и Classic.NET AppPool в IIS7?
У меня проблема с тайм-аутами в IIS. В web.config таймаут сеанса был установлен на 60 минут, но через 20 минут сеанс заканчивается.
Эта проблема возникает только в IIS7, а не в IIS5.
После некоторого расследования я обнаружил, что это связано с таймаутом пула приложений. Если пул приложений оставлен на 20 минут без каких-либо действий, IIS завершает сеанс.
Если приложение использует defaultAppPool, это всегда происходит, но если я изменю пул приложений в классический пул приложений .NET, тайм-аут не произойдет.
Оба режима имеют тайм-аут ожидания, но только в DefaultAppPool это происходит.
- Почему это?
- В чем разница между классическим .NET AppPool и DefaultAppPool?
- В чем разница в конвейере между Classic и Integrated?
Ответы
Ответ 1
IIS7 имеет ряд важных изменений для лучшей поддержки WCF, а одним из ключевых элементов является новый объединенный пул приложений. Эта сессия PDC рассказывает о некоторых из этих проблем с точки зрения улучшения работы служб WCF: http://channel9.msdn.com/pdc2008/TL38/
Эта страница имеет хороший обзор архитектуры IIS7: http://learn.iis.net/page.aspx/101/introduction-to-iis7-architecture/.
Я включил некоторые ключевые сведения из этой статьи о целях двух разных типов пулов приложений ниже:
Интегрированный режим пула приложений
Когда пул приложений находится в Интегрированный режим, вы можете принять преимущество интегрированного архитектура обработки запросов IIS и ASP.NET. Когда рабочий процесс в пул приложений получает запрос, запрос проходит через упорядоченный список событий. Каждое событие называет нужным родным и управляемым модули для обработки частей запросить и сформировать ответ. Существует несколько преимуществ для запуска пулы приложений в интегрированном режиме. Сначала модели обработки запросов IIS и ASP.NET интегрированы в унифицированная модель процесса. Эта модель устраняет шаги, которые были ранее дублируются в IIS и ASP.NET, например аутентификация. Дополнительно, Интегрированный режим доступность управляемых функций для всех типов контента.
Классический режим пула приложений
Когда пул приложений находится в Classic режиме, IIS 7.0 обрабатывает запросы, как в Режим изоляции рабочего процесса IIS 6.0. Запросы ASP.NET сначала проходят собственные этапы обработки в IIS и затем маршрутизируется в Aspnet_isapi.dll для обработка управляемого кода в управляемая среда выполнения. Наконец, запрос перенаправляется обратно через IIS для отправки ответ. Это разделение IIS и модели обработки запросов ASP.NET приводит к дублированию некоторых этапы обработки, такие как аутентификации и авторизации. Кроме того, функции управляемого кода, такие как проверка подлинности форм, доступный для приложений ASP.NET или приложения, для которых у вас есть scriptотображает все запросы, обрабатываемые aspnet_isapi.dll. Обязательно проверьте свои существующие приложения для совместимость в интегрированном режиме до модернизации производства среды для IIS 7.0 и присвоения приложения к пулам приложений в Интегрированный режим. Вы должны добавить только приложение к пулу приложений в классическом режиме, если приложение не работает в интегрированном режиме. Для Например, ваше приложение может полагаться на токене аутентификации, переданном из IIS для управляемого времени выполнения и к новой архитектуре в IIS 7.0, процесс прерывает ваше приложение.
Ответ 2
Классический пул обрабатывает запросы в пуле приложений, используя отдельные конвейеры обработки для IIS и ISAPI. интегрированный использует интегрированный конвейер, IIS и ASP.NET(более высокая производительность) использует преимущества улучшенных функций IIS 7.0, используя только один процесс.
Хорошей практикой является создание нового пула приложений для каждого приложения, а затем настройка в зависимости от требований приложения.
Классический режим выполняет следующие шаги:
1. Входной HTTP-запрос поступает через ядро IIS.
2. Запрос обрабатывается через ISAPI.
3. Запрос обрабатывается через ASP.NET.
4. Запрос возвращается через ISAPI.
5. Запрос возвращается через ядро IIS, где наконец-то отправляется ответ HTTP
Интегрированный режим использует:
1. Входной HTTP-запрос поступает через ядро IIS и ASP.NET.
2. Соответствующий обработчик выполняет запрос и передает ответ HTTP
Увеличьте время ожидания сеанса в web.config согласно
помните, что увеличение этого приводит к тому, что приложение потребляет больше ресурсов, например, память
Ответ 3
Я думаю, ваш вопрос имеет ответ. IIS 6 и 7 имеют концепцию тайм-аута пула приложений, это отличается от тайм-аута сеанса.
В чем разница между режимами... уже адресована. Я не уверен, как ваши вопросы относительно конвейеров и различия в режимах связаны с вашей проблемой - тайм-аутами.
Некоторая перспектива: тайм-аут ожидания не будет происходить на веб-сайте с любым трафиком. Вероятно, у вас есть проблема, которая возникает только на сайте QA или в вашем блоке dev. Установка тайм-аута в режиме ожидания существует для экономии ресурсов в вашем блоке dev и 5-месячных хостинговых компаниях с большим количеством недоиспользуемых веб-сайтов (например, моего блога). Вероятно, вы не хотите простоя в режиме ожидания на общедоступном сайте.
Тайм-аут сеанса - устанавливается в веб-конфигурации, если пользователь не попадает на сервер, время их сеанса отключается.
Тайм-аут ожидания В течение 20 минут никто не трогает веб-сервер, поэтому отключите его, чтобы сохранить ресурсы. В IIS 6 это отображается на вкладке производительности пула приложений и легко отключается. В IIS 7 вы можете установить расширенные настройки пула приложений или в processModel element. Я не запускаю столько IIS 7, как IIS 6, но похоже, что удаление элемента из web.config или установка в 0, приводит к бесконечному тайм-ауту простоя.
Ответ 4
DefaultAppPool игнорирует настройки таймаута сеанса в web.config, но ASPNet App Pool будет использовать настройки в web.config.