Связь между очередью запросов HTTP.sys и пулом приложений IIS - PullRequest
1 голос
/ 23 октября 2011

Я прочитал это из <комплекта ресурсов IIS 7.0>

HTTP.sys поддерживает очередь запросов для каждого рабочего процесса.Он отправляет HTTP-запросы в очередь запросов для рабочего процесса, который обслуживает пул приложений, в котором находится запрошенное приложение.Для каждого приложения HTTP.sys поддерживает таблицу маршрутизации пространства имен URI с одной записью.Данные таблицы маршрутизации используются для определения того, какой пул приложений отвечает на запросы из каких частей пространства имен.Каждая очередь запросов соответствует одному пулу приложений. И пул приложений соответствует одной очереди запросов в HTTP.sys и одному или нескольким рабочим процессам.

Смелые части меня смутили.Насколько я понимаю: HTTP.sys поддерживает очередь запросов для каждого рабочего процесса.Пул приложений может иметь один или несколько рабочих процессов.Таким образом, пул приложений также должен соответствовать одной или нескольким очередям запросов.Почему только один в жирном предложении?

И, кстати, кто-нибудь может дать более четкое объяснение таблицы маршрутизации пространства имен URI ?Некоторые примеры были бы лучше.

Спасибо.

Ответы [ 4 ]

2 голосов
/ 08 июня 2017

Чтобы обсудить абзац в книге, вы должны дать больше информации.

Этот абзац взят из раздела «Основные компоненты IIS 7.0», а версия в Safari Books Online отличается от того, что вы вставили,

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

Таким образом, последнее предложение следует понимать как

  • Пул приложений соответствует одной очереди запросов в http.sys.
  • Пул приложений соответствует одному или нескольким рабочим процессам.

Таким образом, ваше понимание «HTTP.sys поддерживает очередь запросов для каждого рабочего процесса» неверно. Правильным должно быть «HTTP.sys поддерживает очередь запросов для каждого пула приложений». Поэтому независимо от того, сколько рабочих процессов существует для одного пула приложений, они обслуживают запросы только из одной очереди запросов в http.sys.

"Для каждого приложения HTTP.sys поддерживает маршрутизацию пространства имен URI стол с одной записью "

Я думаю, что должно быть «для каждого приложения пул , HTTP.sys поддерживает таблицу маршрутизации пространства имен URI с одной записью». Эта таблица маршрутизации облегчает отправку запросов (чей URL понятен) в пулы. Очень похоже на хеш-таблицу.

Таблица может быть построена из тега <sites> в applicationHost.config путем объединения сайтов, их привязок, приложений и ассоциации их пула приложений. Больше информации от Microsoft о точной структуре таблицы нет.

1 голос
/ 08 июня 2017

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

  1. Запрос, перехваченный HTTP.sys
  2. HTTP.sys устанавливает первоначальный контакт сWAS
  3. БЫЛ прочитал ApplicationHost.config и передал ему службу WWW.
  4. Служба WWW настраивает HTTP.sys (с этого момента HTTP.sys настроил соответствующую очередь пула приложений Iугадайте)
  5. HTTP.sys проверяет, доступен ли рабочий процесс (в случае отсутствия обращается к WAS через WWW), запрос сохраняется в очереди приложения.

=> еслиРабочий процесс доступен, теперь запрос перенаправляется в правильный рабочий пул


Если рабочий процесс недоступен, запрос сохраняется в очереди приложений.HTTP.sys теперь будет уведомлять WAS (через службу WWW) о том, что в очередь добавлен новый запрос.Служба WWW запросит WAS о рабочем процессе.WAS создаст один и даст WWW знать, что пул приложений создан.Теперь WWW может передать запрос соответствующему рабочему процессу (добавив его в свою очередь).Затем WWW сообщит HTTP.sys, что рабочий процесс порожден, поэтому при следующем запросе HTTP.sys может немедленно переслать запрос ...

Я не совсем уверен, технически ли это всеисправить, так что если кто-нибудь сможет исправить / подтвердить это, это будет здорово!

0 голосов
/ 23 июня 2017

Слушатель должен получать сообщения.Для этого ему нужно открыть сокет (или дескриптор канала, или запустить чтение MSMQ и т. Д.).Однако для получения надлежащих сообщений необходимо получить необходимую адресную информацию от WAS.Это достигается во время запуска слушателя.Адаптер слушателя протокола вызывает функцию в интерфейсе адаптера слушателя WAS и, по сути, говорит: «Сейчас я слушаю протокол net.tcp; пожалуйста, используйте этот набор функций обратного вызова, которые я передаю вам, чтобы сказать мне, что мне нужно знать."В ответ WAS перезвонит с любой конфигурацией, которую он имеет для приложений, которые настроены для приема сообщений по рассматриваемому протоколу.Например, прослушиватель TCP будет проинформирован о том, что два приложения (*: 7777 / Foo и *: 7777 / Bar) настроены для использования TCP.WAS также назначает каждому приложению уникальный идентификатор канала прослушивателя, используемый для сопоставления запросов с их приложениями назначения.Процесс слушателя использует информацию о конфигурации, предоставленную WAS, для создания таблицы маршрутизации, которую он будет использовать для сопоставления входящих запросов с идентификаторами каналов слушателей по мере их поступления.

0 голосов
/ 18 октября 2012

Пул приложений может иметь один или несколько рабочих процессов

Это неверно 1 пул приложений = 1 рабочий процесс

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