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. build/envsetup.sh内lunch解析

    ........ # 测试device是否存在且是一个目录 并且 只查找device目录4层以上的子目录,名字为vendorsetup.sh 并且 将命令执行的错误报告直接送往回收站 不显示在屏幕上 ...

  2. BI任务列表

    了解点击流系统和pv/uv的相关计算 关于pv的那些事!! ···············································2014-09-10 homework做了些什 ...

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

    一.元素分类 CSS中html的标签元素大体分为三种类型 1.块状元素 @特点: #每个块级元素都从新的一行开始,并且其后的元素也另起一行(一个块级元素独占一行) #元素的高度.宽度.行高以及顶和底边 ...

  4. ECshop--搜索模块细究

    ecshop细究 今天看了下ecshop搜索这块,前台数据一直到后台查询再返回前台.大致是这么个过程,首先,在index.dwt文件内,body下面引入了 <!-- #BeginLibraryI ...

  5. width:100% 和 max-width:100%; 有区别吗【转藏】

    这个博客是基于“Pelican+Markdown+定制的my-gum主题”的.定制的主题将博文正文页面的 右边栏去掉,这导致在Firefox等浏览器中,正文中大的图片会突破正文块的宽度,高度也得不到限 ...

  6. 一个少了context的赋值的错误

    错误类型如下,怎么也找不到错误,后来仔细看了源代码,原来忘了context的赋值,只是声明,声明后不马上引用到值容易出事. 11-12 15:00:09.877: E/AndroidRuntime(6 ...

  7. c语言学习之基础知识点介绍(一):输出语句和变量简单介绍

    本系列是为了学习ios做准备的,也能作为c语言入门的教程看看. c语言的程序结构: 1.顺序结构:自上而下依次执行. 2.分支结构:程序有选择的执行某段代码或者不执行某段代码. 3.循环结构:程序循环 ...

  8. org.hibernate.HibernateException: No CurrentSessionContext configured!

    hibernate可以通过两种方式获得Session: getCurrentSession() 和openSession(). 当通过getCurrentSession()方法时,需要在 hibern ...

  9. Perl连接Sqlite数据库

    Sqlite是一个小巧的嵌入式关系型数据库,几乎可以嵌入所有编程语言,特别是C,C++,PHP,Perl等.这里就介绍如何用Perl连接并操作Sqlite数据库. use DBI; # perl用以操 ...

  10. 深入理解shared pool共享池之library cache系列二

    背景 继续上文:深入理解shared pool共享池之library cache系列一,学习library cache数据结构,本文主要学习library cache object(lco)的数据结构 ...