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. tem

    有时间需要整理的东西 1.登录 2.后台框架(管理界面) 3.api详细情况调用 4.具有基础操作的模块 5.session 6.操作权限控制

  2. 用bootstrap的tab插件做一个图层切换效果(感觉会误导淫们,大家当乐子看吧)

    小伙伴们啊,我JS真的是个渣渣,所以总想要偷懒,于是为了实现效果就把tab插件给改了(各位大神轻拍啊,我是小白,很纯洁滴,小心脏也很脆弱)…… 最近做的项目为了考虑以后的移动设备兼容性,所以用了Boo ...

  3. Handler 原理分析和使用(二)

    在上篇 Handler 原理分析和使用(一)中,介绍了一个使用Handler的一个简单而又常见的例子,这里还有一个例子,当然和上一篇的例子截然不同,也是比较常见的,实例如下. import andro ...

  4. C#中volatile的用法

    恐怕比较一下volatile和synchronized的不同是最容易解释清楚的.volatile是变量修饰符,而synchronized则作用于一段代码或方法:看如下三句get代码: int i1;  ...

  5. 在jsp中用EL 表达来获取表单中的参数

     在一个JSP页面转到另一个JSP页面时,对表单中的参数用EL表达式提取为:     <form action="sampleJsp.jsp" method="po ...

  6. SQL数据库的备份和恢复

    SQL数据库的备份和恢复 一.SQL数据库的备份: 1.依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Server Management Studi ...

  7. js小分享

    之前实现一些js代码时,总觉得无法下手,所以最近在学习一下特别细的知识点,分享笔记.嘻嘻,偷个小懒,我把自己的笔记拍个照片就不打字了.嘎嘎,放心放心,自觉得字写的还算ok的啦- 表示家里的老弟玩游戏, ...

  8. python学习笔记--随时更新

    # coding=GBK score = 90 if score >= 80: print("好") elif score >= 60: print("及格& ...

  9. Linux 信号量互斥编程

    所谓信号量,其实就是一个数字.内核给这个数字赋予一定的含义,让它等于不同的值时所表示的意义不同.这样就可以用它来标示某种资源是否正被使用.信号的分类其实挺多的,主要还是二值和计数器.这里讨论二值 现在 ...

  10. chromium安装flash

    sudo apt-get install pepperflashplugin-nonfree sudo update-pepperflashplugin-nonfree --install Flash ...