HTTP.sys请求队列与IIS应用程序池之间的关系

HTTP.sys请求队列与IIS应用程序池之间的关系,iis,iis-7,Iis,Iis 7,我从 HTTP.sys为每个工作进程维护一个请求队列。它将HTTP请求发送到为请求的应用程序所在的应用程序池提供服务的工作进程的请求队列。 对于每个应用程序,HTTP.sys使用一个条目维护URI命名空间路由表。路由表数据用于确定哪个应用程序池响应来自命名空间哪些部分的请求。每个请求队列对应一个应用程序池和应用程序池对应于HTTP.sys中的一个请求队列和一个或多个工作进程。 粗体部分把我弄糊涂了。 我的理解是:HTTP.sys为每个工作进程提供一个请求队列。应用程序池可以有一个或多个工作进程。

我从

HTTP.sys为每个工作进程维护一个请求队列。它将HTTP请求发送到为请求的应用程序所在的应用程序池提供服务的工作进程的请求队列。 对于每个应用程序,HTTP.sys使用一个条目维护URI命名空间路由表。路由表数据用于确定哪个应用程序池响应来自命名空间哪些部分的请求。每个请求队列对应一个应用程序池和应用程序池对应于HTTP.sys中的一个请求队列和一个或多个工作进程。

粗体部分把我弄糊涂了。 我的理解是:HTTP.sys为每个工作进程提供一个请求队列。应用程序池可以有一个或多个工作进程。因此,应用程序池还应该对应于一个或多个请求队列。为什么只有一个黑体字

顺便说一句,有人能更清楚地解释一下URI名称空间路由表吗?一些例子会更好

谢谢

应用程序池可以有一个或多个工作进程

这不正确1应用程序池=1工作进程

应用程序池可以有一个或多个工作进程


这是不正确的1个应用程序池=1个工作进程

我正在努力解决同一个问题。。。但我认为过程如下:

  • HTTP.sys截获的请求
  • HTTP.sys与WAS进行初始联系
  • 已读取ApplicationHost.config并将其传递给WWW服务
  • WWW服务配置HTTP.sys(从这一点上看,HTTP.sys已经设置了相应的应用程序池队列)
  • HTTP.sys检查工作进程是否可用(联系人通过WWW联系)。如果不可用,请求将存储在应用程序队列中
  • =>如果工作进程可用,则请求现在转发到正确的工作池


    如果没有工作进程可用,则请求存储在应用程序队列中。HTTP.sys现在将通知WAS(通过WWW服务)一个新请求已添加到队列中。WWW服务将要求WAS提供工作进程。WAS将生成一个应用程序池,并让WWW知道已经创建了一个应用程序池。现在,WWW可以将请求传递给相应的工作进程(通过将其添加到队列)。然后WWW会让HTTP.sys知道一个工作进程已经生成,所以下一个请求HTTP.sys可以以IMM方式转发该请求


    我不完全确定这在技术上是否完全正确,因此如果有人能够纠正/确认这一点,那就太好了

    我正在为同样的问题挣扎。。。但我认为过程如下:

  • HTTP.sys截获的请求
  • HTTP.sys与WAS进行初始联系
  • 已读取ApplicationHost.config并将其传递给WWW服务
  • WWW服务配置HTTP.sys(从这一点上看,HTTP.sys已经设置了相应的应用程序池队列)
  • HTTP.sys检查工作进程是否可用(联系人通过WWW联系)。如果不可用,请求将存储在应用程序队列中
  • =>如果工作进程可用,则请求现在转发到正确的工作池


    如果没有工作进程可用,则请求存储在应用程序队列中。HTTP.sys现在将通知WAS(通过WWW服务)一个新请求已添加到队列中。WWW服务将要求WAS提供工作进程。WAS将生成一个应用程序池,并让WWW知道已经创建了一个应用程序池。现在,WWW可以将请求传递给相应的工作进程(通过将其添加到队列)。然后WWW会让HTTP.sys知道一个工作进程已经生成,所以下一个请求HTTP.sys可以以IMM方式转发该请求


    我不完全确定这在技术上是否完全正确,因此如果有人能够纠正/确认这一点,那就太好了要讨论书中的段落,你应该提供更多信息

    本段来自“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是明确的)分派到池变得更容易。非常类似于哈希表

    通过组合站点、它们的绑定、应用程序和它们的应用程序池关联,可以从applicationHost.config中的
    标记构造该表。那里