Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Для студентов 3-го курса ОССО.docx
Скачиваний:
14
Добавлен:
20.04.2019
Размер:
65.73 Кб
Скачать

Настройка сервера и управление рабочим процессом

При инициализации часть сервиса WWW, отвечающая за конфигурирование, использует хранящуюся в памяти конфигурационную метабазу для инициализации таблицы маршрутизации (routing table) пространства имен HTTP.sys.

Каждая запись в этой таблице содержит информацию, необходимую для перенаправления входящих URL пулу приложений, где находится сопоставленное с данным адресом приложение.

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

Все предварительные действия выполняются до того, как HTTP.sys приступает к перенаправлению запросов индивидуальным процессам.

По мере добавления новых приложений и их пулов Web-сервис настраивает HTTP.sys на прием новых адресов, создает новые очереди запросов для новых пулов приложений и указывает, куда перенаправлять новые URL. Для динамического изменения информации о маршрутизации перезапуск сервиса не требуется.

В роли управляющего рабочим процессом компонент WWW Service Administration и Monitoring отвечает за управление жизненным циклом рабочего процесса, обрабатывающего запросы.

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

Режим изоляции рабочего процесса

IIS 6.0 предоставляет новый режим изоляции приложения для управления обработкой Web-сайтов и приложений - режим изоляции рабочего процесса.

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

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

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

Первым делом HTTP.sys отправляет запросы, адресованные к Web-сайтам и приложениям, соответствующим очередям пулов приложений.

Затем рабочий процесс, обслуживающий пул приложений, извлекает запросы напрямую из очереди приложений в HTTP.sys. Такая модель позволяет избавиться от лишних переключений процессов, возникающих при отправке запросов внепроцессному DLLHost.exe и обратно (как в IIS 4.0 и 5.0), что увеличивает производительность.

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

Подобная архитектура не дает сбойному Web-сайту или приложению нарушить работу другого Web-приложения или самого сервера. В IIS 6.0 теперь можно выгрузить внутрипроцессный компонент, не останавливая Web-сервис.

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

Дополнительное преимущество - возможность задействовать другие сервисы операционной системы, доступные на уровне процесса [например управление распределением процессорного времени (CPU throttling)] для пулов приложений. Кроме того, архитектура Windows Server 2003 поддерживает гораздо больше параллельных процессов, чем в предыдущих операционных системах.

Режим изоляции рабочего процесса не дает одному приложению или сайту остановить другие приложения.

Помимо этого, разделение приложений или сайтов на отдельные рабочие процессы упрощает многие задачи управления, например:

включение/выключение сайта или приложения (независимо от остальных работающих сайтов или приложений),

  • изменение используемого приложением компонента,

  • отладку приложения,

  • наблюдение за счетчиками производительности,

  • регулирование ресурсов, выделяемых приложению.

Режим изоляции рабочего процесса в IIS 6.0 имеет следующие особенности.

  1. Кэширование в режиме ядра.. В IIS 6.0 кэширование в режиме ядра осуществляется как в режиме изоляции рабочего процесса, так и в режиме изоляции IIS 5.0 (см. ниже). В качестве единой точки приема всех входящих (серверных) HTTP-запросов HTTP.sys создает высокопроизводительный канал связи для серверных HTTP-приложений и обеспечивает общее управление соединениями, регулирование полосы пропускания и протоколирование на стороне Web-сервера. IIS 6.0 основан на HTTP.sys и специально настроен на увеличение производительности Web-сервера. Кроме того, в некоторых случаях HTTP.sys напрямую обрабатывает запросы в ядре. Как статический, так и динамический контент Web-сайтов и приложений может помещаться в кэш HTTP.sys для уменьшения времени ответа.

  2. Четкое разделение между пользовательским кодом и сервером. Весь пользовательский код обрабатывается рабочими процессами, полностью изолированными от ядра Web-сервера. Это важное усовершенствование по сравнению с IIS 5.0, так как ISAPI зачастую выполняются внутрипроцессно в ядре Web-сервера. Если ISAPI, загруженный в рабочий процесс, вызывает сбой или нарушение доступа к памяти, останавливается лишь рабочий процесс, выполняющий ISAPI. Тем временем сервис WWW создает новый рабочий процесс, заменяющий рухнувший. На остальные рабочие процессы это не оказывает никакого влияния.

  3. Множественные пулы приложений. В IIS 5.0 приложения можно объединять во внепроцессный пул, но только в один, который выполняется в среде DLLHost.exe. Когда IIS 6.0 работает в режиме изоляции процессов, администраторы могут создать до 2 000 пулов приложений, причем каждый из них можно конфигурировать раздельно.

  4. Улучшенная поддержка распределителей нагрузки. Благодаря пулам приложений IIS 6.0 поддерживает физическое разделение приложений. IIS 6.0 способен автоматически взаимодействовать с распределителями нагрузки (load balancers) или с коммутаторами для блокирования трафика к проблемному приложению, параллельно продолжая принимать запросы к другим приложениям. В IIS 6.0 также встроена модель расширения, позволяющая генерировать события и команды при обнаружении сбоя в конкретном приложении. Такая конфигурация позволят распределителям нагрузки и коммутаторам автоматически блокировать трафик к проблемным приложениям, не препятствуя запросам к работающим.

  5. Web-сады (Web gardens). На обслуживание запросов, адресованных одному пулу приложений, можно настроить несколько рабочих процессов. По умолчанию каждому пулу соответствует один рабочий процесс. Однако пул можно настроить так, чтобы ему соответствовал набор из N эквивалентных рабочих процессов, разделяющих нагрузку. Такая конфигурация называется Web-садом. HTTP.sys распределяет запросы между рабочими процессами в группе. Распределение запросов основано на принципе карусели. Преимущества Web-садов в том, что, если один рабочий процесс замедляется, например, когда подсистема выполнения сценариев перестает отвечать, прием и обработка запросов продолжается остальными рабочими процессами.

  6. Слежение за состоянием. Компонент WWW Service Administration and Monitoring следит за состоянием приложений, периодически проводя тестовый опрос рабочих процессов, чтобы выяснить, не заблокированы ли они. В случае блокировки рабочего процесса сервис WWW завершает рабочий процесс и создает вместо него новый. Сервис WWW поддерживает коммуникационный канал с каждым рабочим процессом и всегда в состоянии определить сбой в рабочем процессе по обрыву канала.

  7. Привязка к процессорам (processor affinity). Рабочие процессы можно привязать к конкретным процессорам, чтобы увеличить частоту попаданий в кэш процессора (уровня L1 или L2). Реализация привязки к процессорам приводит к тому, что рабочие процессы IIS 6.0 выполняются на конкретных процессорах, и эта привязка распространяется на все рабочие процессы, обслуживающие Web-сайты и приложения в каком-либо пуле. Привязку к процессорам можно использовать в сочетании с Web-садами, выполняемым на многопроцессорных компьютерах, где под конкретные пулы приложений выделены кластеры процессоров.

  8. Сопоставление сайтов и приложений с пулами приложений. В IIS 6.0, как и в IIS 5.0, приложения определяются как пространства. Сайты по умолчанию считаются простыми приложениями, в которых пространство имен сконфигурировано как приложение. Пул приложений можно настроить на обслуживание от одного Web-приложения до множества приложений и сайтов. Чтобы поместить приложение в пул, следует использовать IIS Manager или напрямую модифицировать метабазу.

  9. Запуск по требованию. Пулы приложений позволяют запускать процессы, обслуживающие группу пространства имен по требованию, т. е. при первом запросе к URL, который является частью этого пространства имен. Компонент WWW Service Administration and Monitoring выполняет запуск процесса по требованию и в целом контролирует жизненный цикл рабочих процессов.

  10. Время ожидания в простое. Пул приложений можно настроить на остановку собственных рабочих процессов, если они простаивают в течение определенного периода. Это нужно для освобождения неиспользуемых ресурсов. При необходимости для данного пула приложений запускаются дополнительные рабочие процессы (см. далее "Запуск по требованию").

  11. Быстрая защита от сбоев. При сбое рабочий процесс обрывает коммуникационный канал с компонентом WWW Service Administration and Monitoring. Последний обнаруживает это и принимает меры, обычно включающие запись события в журнал и перезапуск рабочего процесса. Кроме того, IIS 6.0 можно настроить на автоматическую блокировку рабочего процесса, если в пуле приложений возникает определенное число сбоев за заданный период. Такое поведение называется быстрой защитой от сбоев (rapid-fail protection). Быстрая защита от сбоев переводит пул приложений в состояние "не обслуживается", и HTTP.sys немедленно возвращает сообщение 503 (Service Unavailable) на любые запросы к частям этого пространства имен, в том числе на запросы, уже помещенные в очередь этого пула приложений.

  12. Отбрасывание (orphaning) рабочих процессов. Режим изоляции рабочего процесса можно настроить на отбрасывание рабочих процессов, которые считаются зависшими. Например, если рабочий процесс не отвечает на тестовые опросы в течении определенного периода, сервис WWW обычно завершает его и запускает новый. А если включено отбрасывание, он оставляет зависший процесс в памяти и запускает новый. Кроме того, сервис WWW можно настроить на выполнение команды над рабочим процессом (например на подключение отладчика) при его отбрасывании.

  13. Повторное использование рабочих процессов. Сейчас многие организации страдают от проблем, связанных с тем, что Web-приложения вызывают утечки памяти, плохо написаны или содержат непонятные ошибки. Это вынуждает администраторов периодически перезапускать Web-серверы. В предыдущих версиях IIS способа перезапустить Web-сайт, не прерывая работу всего сервера, не было. Режим изоляции рабочего процесса можно настроить на периодический перезапуск рабочих процессов в пуле приложения для борьбы со сбойными приложениями. Рабочие процессы можно настроить на перезапуск в соответствии со следующими критериями: истекшим временем, количеством обслуженных запросов, временем суток, использованием виртуальной и физической памяти, а также по требованию. Когда рабочий процесс считает необходимым выполнить перезапуск, он уведомляет WWW-сервис, который в свою очередь дает команду на завершение существующим рабочим процессам и выделяет заданное время на обработку оставшихся запросов. Одновременно сервис WWW создает замещающий рабочий процесс для той же группы пространства имен, и новый рабочий процесс запускается до завершения работы старого. Это предотвращает перебои в обслуживании. Старый рабочий процесс поддерживает связь с HTTP.sys для завершения обработки своих запросов, а затем либо нормально завершает работу, либо его работа завершается извне, если он не остановился по истечении заданного периода.

  14. Режим изоляции IIS 5.0 Некоторые приложения не совместимы с режимом изоляции рабочего процесса IIS 6.0, например приложения-фильтры, читающие необработанные данные, или приложения, полагающиеся на выполнение в Inetinfo.exe или DLLHost.exe. Поэтому IIS 6.0 способен работать в другом режиме изоляции, который называется режимом изоляции IIS 5.0 и обеспечивает совместимость. Использование этого режима напоминает работу с самим IIS 5.0, так как в нем присутствуют те же основные процессы пользовательского режима. В частности, есть те же методы изоляции приложений (низкий, средний в пуле и высокий), а Inetinfo.exe - по-прежнему главный процесс, через который проходят все запросы.