IIS 请求主要模块
当客户端向 IIS 发出 HTTP 请求时,会有很多事情发生。 有许多内核模式和本机模式组件,用于将请求路由到最终响应请求的 W3WP 进程。
响应一个 HTTP 请求主要的组件:
Component | Description |
HTTP.sys | Kernel level HTTP/HTTPS protocol listener |
W3SVC | World Wide Web Publishing Service – User level listener adapter for HTTP.sys |
WAS | Windows Process Activation Service – Worker Process (W3WP) manager |
W3WP | IIS Worker Process -> Application Pool |
每个组件将日志写入的位置:
Component | Logs are written to |
HTTP.sys | C:WindowsSystem32LogFilesHTTPERR |
W3SVC | System Event Viewer |
WAS | System Event Viewer |
W3WP | System Event Viewer and IIS Logs in C:intepublogsLogFilesW3SVC* |
HTTP.sys
http.sys 侦听来自网络的 HTTP 请求,将它们传递到 IIS 并返回响应。 它是一种可以从命令行停止和启动的服务。
"NET STOP HTTP" 停止 HTTP 服务和 "NET START HTTP" 启动 HTTP 服务。
我们可以使用 NETSH HTTP 修改 http.sys 设置,如下所述。 NETSH HTTP 命令更新此处找到的 http.sys 注册表设置。 当您修改 http.sys 设置时,您需要通过运行,STOP STOP HTTP 和然后 NET START HTTP 回收 HTTP 侦听器,如前所示。
*注意:不要在实时生产机器上回收 HTTP 侦听器,除非可以接受某些停机时间。
W3SVC(World Wide Web Publishing Service)
W3SVC 是 HTTP.sys 侦听器的适配器。可以从服务管理控制台停止和启动 W3SVC 服务。
W3SVC 负责配置 HTTP.sys 和 WWW 性能计数器。
这里可以用 "NET STOP W3SVC" 和 "NET START W3SVC" 停止和启动 W3SVC 服务。
WAS(Windows Process Activation Process)
WAS 管理应用程序池配置和工作进程(W3WP)。 基本上,WAS 收集所有配置文件,如图下图所示,并创建一个有效的配置并将其存储在
C:inetpub empappPools 目录中。(注:inetpub 是 windows 操作系统中 IIS web 服务器的主目录,用户开启了 IIS 功能,所以才有了这个文件夹)。
W3WP(IIS Worker Process)
应用程序池 和 W3WP 进程之间的区别或关系是什么? 正如这里所强调的,应用程序池是被路由到一个或多个工作进程的一组URL。 您可以有一个运行多个网站的单个 W3WP 进程,但这使它更难排除故障。 因此,在网站和应用程序池之间有1对1映射。
w3wp 工作进程
Application Pool
Web Site
从上图中可看出,这两个站点设置了不同的 Application Pool,在应用进程中 w3wp 与 Application Pool 是一一对应关系。
总结
您可以了解 IIS 体系结构的不同组件,每个组件都有自己的管理方式,每个组件在遇到问题或禁用时会做出不同的响应。 每个将错误日志写入不同的位置以供分析和审核。 每个组件需要对于接收有效响应的请求是健康和功能的。
最上面那张图说明了一个 HTTP 向 W3WP 进行发出请求的过程。
参考文章:
Using HTTP, W3SVC, WAS and W3WP:https://blogs.msdn.microsoft.com/benjaminperkins/2016/06/16/lab-6-using-http-w3svc-was-and-w3wp/