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:\Windows\System32\LogFiles\HTTPERR
W3SVC System Event Viewer
WAS System Event Viewer
W3WP System Event Viewer and IIS Logs in C:\intepub\logs\LogFiles\W3SVC*
 
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\temp\appPools 目录中。(注: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 进行发出请求的过程。
 
 
参考文章:

HTTP, W3SVC, WAS 和 W3WP的更多相关文章

  1. w3wp与w3svc

      如何找到w3wp与w3svc的对应关系   在生产环境中,一般会有多个IIS进程在运行,这里面可能是有Web Garden的设置,也可能是有多个application pool在运行.而我们经常在 ...

  2. 如何找到w3wp与w3svc的对应关系

    在生产环境中,一般会有多个IIS进程在运行,这里面可能是有Web Garden的设置,也可能是有多个application pool在运行.而我们经常在c:\inetpub\logs目录下面,看到很多 ...

  3. iisreset和w3wp的关系

    iisreset是iis自带一个命令行工具.用法: iisreset [computername] /RESTART          停止然后重新启动所有 Internet 服务. /START   ...

  4. 查看w3wp进程占用的内存及.NET内存泄露,死锁分析

    一 基础知识 在分析之前,先上一张图: 从上面可以看到,这个w3wp进程占用了376M内存,启动了54个线程. 在使用windbg查看之前,看到的进程含有 *32 字样,意思是在64位机器上已32位方 ...

  5. C#~异步编程再续~await与async引起的w3wp.exe崩溃

    返回目录 最近怪事又开始发生了,IIS的应用程序池无做挂掉,都指向同一个矛头,async,threadPool,Task,还有一个System.NullReferenceException,所以这些都 ...

  6. 利用windbg 分析IIS 的线程池w3wp程序多线程挂起问题

    前几天有个朋友发个了在windows server 2008跑的IIS 跑的程序w3wp程序dmp,要我帮忙分析为何线程都挂起不运行 经过查阅资料用windbg可以调试可以输出线程的调用堆栈,但是准备 ...

  7. 分析案例:应用服务器W3WP进程CPU持续超过百分之九十(Oracle客户端Bug)

    问题描述: 项目反馈应用负载的其中一台服务器业务操作的响应非常慢,登录该服务器发现W3WP进程CPU持续超过90%,哪怕在业务低峰期也是如此?远程查看后发现该应用服务器承载的请求确实很低,why??? ...

  8. 分析案例:应用服务无响应,任务管理器中发现大量w3wp僵尸进程----等待异构系统WebService返回值

    问题描述:       某二次开发的项目反馈,不定期出现应用服务器无响应的情况,登录服务器发现任务管理器中有大量的w3wp僵尸进程. 分析过程: 针对同一进程每隔15秒抓取dump,连续抓取3个,对比 ...

  9. 如何定位Sharepoint网站集所在的w3wp进程

     方法1.    直接开始运行,输入cmd,再输入iisapp可以列出当前所有IIS中的WebApplication所对应的w3wp.exe进程,后面都有一个进程号标识,在VS中调试的时候附加到对应进 ...

随机推荐

  1. C 函数指针数组

    名字有点绕口,其实更应该翻译为指针函数数组. 记录下对Head-First C这一节的理解,几乎每天班车上都会咪两眼,几乎每次都是看不懂,敲一敲的时候才有些明白. 通俗点讲,这功能解决的是,具有同种签 ...

  2. HTML+CSS基础学习笔记(2)

    一.无序列表标签ul <ul> <li>信息</li> <li>信息</li> ...... </ul> 代码解释:每项< ...

  3. Sqlserver通过链接服务器访问Oracle的解决办法

    转自http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 一.创建sqlserver链接服务(sqlserver链接oracle)  首先sqlse ...

  4. 使用LuaInterface遇到的编码问题

    今天使用LuaInterface加载脚本时忽然报“未知字符”错误信息!于是检查文件编码 将其修改为“US ASCII” 就好了.

  5. jmeter压测app

    使用代理的方式,录制app端脚本,之后用jmeter压测就没啥好说的了 1.电脑端谷歌设置本地代理(端口号为8888) 2.jmeter设置HTTP代理服务器(端口号为8888) 3.手机端wifi设 ...

  6. 【基础】Oracle 表空间和数据文件

    多个表空间的优势:1.能够将数据字典与用户数据分离出来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突2.能够将回退数据与用户数据分离出来,避免由于硬盘损坏而导致永久性的数据丢失3 ...

  7. javascript:console.log()是什么js库里的?

    这个不是什么库的,这个是浏览器的函数,如果你使用firefox并且装有firebug插件,当使用console.log(……)时,会把括号内的字符串输出到控制台,当然,在IE中这个是没有的,要报错.相 ...

  8. JavaEE web.xml 中ContextLoaderListener的解析

    ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息.因为它实现了ServletContextListener这个接口,在 ...

  9. angularjs应用骨架(3)

    好,继续上一章节我们继续聊聊angularjs骨架.开发任何一款优秀的应用都会面临一项非常困难的工作,那就是找到一种合适的方式方法把代码组织在合适的功能范围内.我们已经看过控制器的处理方式,它会提供一 ...

  10. angularjs应用骨架(2)

    时隔一个星期,接着上一篇的angularjs应用骨架继续聊聊angularjs其他的其他的内容. 区分UI和控制器的职责 在应用控制器中有三种职责: 1.为应用中模型设置初始状态 2.通过$scope ...