Поделиться через


Функции службы активации процессов Windows (WAS)

Томас Демль (Thomas Deml)

Служба активации процессов Windows (WAS) iis 7 является ключевым компонентом, предоставляющим функции модели процессов и конфигурации для веб-приложений и веб-служб. Основной задачей WAS является управление пулами приложений. Пулы приложений — это контейнеры конфигурации, представляющие среду размещения для групп URL-адресов.

Когда HTTP-клиент запрашивает URL-адрес, HTTP.SYS сопоставляет запрос с очередью запросов пула приложений. Рабочий процесс для очереди запросов пула приложений создается was, и рабочий процесс выполняет код, необходимый для отправки ответа. Одной из main задач WAS является управление рабочими процессами, которые она породила, т. е. WAS отслеживает их работоспособность, при необходимости перезапускает их и не потребляют больше ресурсов, чем указано в соответствующей конфигурации AppPool. WAS также является арбитром и сборщиком для данных времени выполнения и состояния, например счетчиков производительности, сайта и состояния пула приложений.

Архитектурная диаграмма

Архитектура IIS 7.0

Функции модели процессов

Поддержка 10 000 или более веб-сайтов, размещенных на одном физическом компьютере, является основным требованием для современных сред массового размещения. Код, выполняемый на этих веб-сайтах, обычно не хорошо протестирован, если вообще не протестирован. Для поддержки этих требований WAS необходимо обеспечить эффективную модель процессов и эффективное управление ресурсами.

Эффективное управление ресурсами

Активация по запросу

Такие ресурсы, как ОЗУ и ЦП, ограничены в сценариях с несколькими клиентами. WAS запустит рабочий процесс IIS только после поступления запросов на определенный веб-сайт или веб-приложение.

Время ожидания простоя

Так как ресурсы обычно ограничены, WAS может завершить работу веб-приложений на основе настраиваемого времени ожидания простоя.

Мониторинг работоспособности

Чтобы убедиться в работоспособности, WAS отслеживает рабочие процессы, которые она породила. Сообщения о работоспособности периодически отправляются в каждый запущенный рабочий процесс. Если рабочий процесс не отвечает в течение настраиваемого интервала времени, рабочий процесс будет переработан или завершен. Таким образом, незамеченные взаимоблокировки в рабочих процессах автоматически устраняются путем перезапуска рабочего процесса.

Ограничение при запуске

Частью функции защиты Rapid-Fail является ограничение на запуск. Если рабочий процесс не сообщает обратно в WAS в пределах настраиваемого ограничения запуска, он будет завершен, а счетчик Rapid-Fail-Protection увеличивается. Пулы приложений остановлены, т. е. перезапуск рабочего процесса больше не будет пытаться, если счетчик Rapid-Fail-Protection достигнет настраиваемого ограничения в течение настраиваемого ограничения. Это предотвращает сценарии, в которых рабочие процессы зависают или завершают работу во время запуска.

Предел завершения работы

Рабочий процесс также должен завершить работу в настраиваемом ограничении. Если завершение работы не произойдет в это время, рабочий процесс завершается was. Это предотвращает чрезмерное использование ресурсов из-за зависания процессов на этапе завершения работы. Дополнительные параметры завершения работы позволяют запускать исполняемый файл (например, отладчик), если завершение работы не завершается в отведенное время.

Сходство ЦП

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

Профиль пользователя

WAS может запускать рабочие процессы с загрузкой профиля пользователя или без нее.

Безопасность

Удостоверение пула приложений

Рабочие процессы IIS могут выполняться как пользовательская учетная запись, встроенная учетная запись (LocalService, LocalSystem, NetworkService) или удостоверение пула приложений (по умолчанию). Рекомендуется использовать удостоверение пула приложений, так как оно не требует управления паролями, а удостоверения пула приложений уже соблюдают принцип минимальных привилегий. Встроенные учетные записи также не требуют управления паролями. Если используется пользовательское удостоверение пользователя, пароль автоматически шифруется. Параметры конфигурации можно реплицировать на несколько компьютеров путем совместного использования ключей шифрования конфигурации на разных компьютерах.

Функции объекта задания

Объекты заданий позволяют администраторам ограничивать рабочие процессы определенным ограничением ЦП. При превышении этого ограничения ЦП выполняется настраиваемое действие. Объекты заданий также будут гарантировать завершение процессов, порожденных рабочим процессом.

Изоляция и безопасность конфигурации

Перед запуском was пула приложений и его рабочего процесса создается уникальный файл конфигурации для этого пула приложений. Пулы приложений также имеют параметры конфигурации для запуска пулов приложений с уникальными удостоверениями. Однако изоляция может быть достигнута, даже если используется одно и то же удостоверение. WAS создает уникальный идентификатор безопасности (SID) для каждого пула приложений. Затем файл конфигурации пула приложений защищен с помощью этого уникального идентификатора безопасности. Это гарантирует, что файлы конфигурации пула приложений могут считывать только администраторы и сам пул приложений. С помощью этого уникального идентификатора безопасности можно настроить даже разрешения для файлов.

Диагностика и мониторинг

Ведение журналов событий

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

Выполняемые в настоящее время запросы

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

Счетчики производительности

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

Перезапуск

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

Перекрывающееся повторное использование

Was делает это, создавая новый рабочий процесс параллельно старому, который по-прежнему обрабатывает запросы. После того как новый рабочий процесс будет запущен, он начинает подбирать запросы из очереди запросов, а старый рабочий процесс получает указание от WAS прекратить прием запросов. Когда старый рабочий процесс завершит выполнение всех запросов, он завершает работу. Эта функция называется "перекрывающимся перезапуском". Это гарантирует, что во время перезапуска запросы не будут потеряны.

Конфигурация перезапуска

Параметры перезапуска настраиваются в системе конфигурации IIS.

Запланированное повторное использование

Клиенты могут захотеть повторно использовать свои приложения по регулярному расписанию. С помощью параметров конфигурации можно периодически планировать перезапуск, например каждые 4 часа, каждый день в 1:00 и т. д.

Перезапуск на основе потребления памяти

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

Перезапуск на основе количества запросов

Перезапуск также можно настроить на основе количества запросов, обработанных конкретным рабочим процессом.

Настраиваемая переработка

Пользовательский код может настраивать статистику работоспособности и активировать перезапуск с помощью вызова API среды выполнения WAS и API состояния.

Потерянный процесс

Некоторые ошибки возникают только в рабочей среде. Убийство рабочих процессов обеспечивает время работы, но устранение этих ошибок становится сложной задачей, например, если неработоспособность рабочего процесса требует отладки. Функция потерянных процессов в WAS позволяет перезапускать рабочие процессы, не убивая рабочий процесс, завершив его сбоем. Теперь к нему можно подключить отладчик. Дополнительные параметры потерянных процессов позволяют выполнять процесс (например, отладчик), если происходит потерянный процесс.

Управление состоянием пула приложений

Пулы приложений можно остановить, перезагрузить или запустить с помощью общедоступных API, например, если приложение должно быть отключено или перезапуск должен быть выполнен на основе параметров, отличных от того, что можно настроить в файле applicationhost.config.

Дополнительные возможности WAS

Функции Load-Balancer

HTTP.SYS по-прежнему прослушивает сеть и возвращает сообщение об ошибке HTTP 500, если запросы не будут приняты пулом приложений. Это проблема, так как для подсистем балансировки нагрузки уровня 5 (TCP/IP) ошибка HTTP 500 выглядит как допустимое подключение TCP/IP. Параметр конфигурации WAS позволяет HTTP.SYS отклонять подключения вместо отправки HTTP-ответов.

WAS можно настроить для запуска рабочих процессов со следующими параметрами:

Поддержка WoW64

WAS может запускать 32-разрядные или 64-разрядные рабочие процессы.

Предварительная загрузка платформа .NET Framework

WAS можно настроить для предварительной загрузки определенной версии платформа .NET Framework. Это может значительно упростить устранение конфликтов версий.

Веб-сады

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

Поддержка нескольких протоколов WAS

В WAS размещается не только стек HTTP. Он также может размещать другие протоколы с помощью адаптера прослушивания и платформы рабочих процессов. Службы WCF используют поддержку нескольких протоколов WAS. Протоколы WCF поставляются со своими собственными прослушивателями (например, NET. TCP, NET. MSMQ или NET. Прослушиватель PIPE). Эти прослушиватели подключаются к WAS с помощью интерфейсов адаптера прослушивателя, которые предоставляет WAS.

Протоколы приложений, использующие преимущества этой инфраструктуры, могут размещать пользовательский код приложения в том же домене приложения .NET, что и обычные приложения ASP.NET. Они также могут использовать независимые от протокола службы, предоставляемые ASP.NET среде размещения, например компиляцию по запросу, поддержку конфигурации и т. д.