设为首页 收藏本站
查看: 1000|回复: 0

[经验分享] 深入理解IIS工作原理

[复制链接]

尚未签到

发表于 2015-8-16 07:49:00 | 显示全部楼层 |阅读模式
本文是转载。
上一篇 / 下一篇  2009-08-26 09:41:46 / 个人分类:Python学习

查看( 267 ) / 评论( 0 ) / 评分( 0 / 0 )
  基本概念:
  1. 站点程序:在IIS中我们所新建的站点,可以为其配置ASP.net以及应用程序池的版本。
  2. 虚拟目录:用来将不同的文件夹中的内容通过虚拟目录组织到同一个文件夹中,相当于一个应用程序,也对应着一个应用程序池。
  3. 应用程序池:《微软概念》是将一个或多个应用程序连接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中的应用程序所产生的问题的影响。
  4. 工作进程隔离模式:防止一个应用程序或站点停止了而影响另一个应用程序或站点。应用程序池直接从内核接收请求而非WWW服务。
  5. W3WP.exe是IIS的工作进程池,每一个w3wp.exe是IIS的一个web园,一般在IIS6.0中出现,一般的工作进程池只有一个web园,但是如果在工作进程池的web园中最大工作进程数被修改可能出现多个w3wp.exe,或者多个工作进程池同事工作也可能出现多个w3wp.exe。它的启动用户是系统内置安全账户network service。
  6. Web Gargen:指一个应用程序可以再多个进程(w3wp.exe)中来执行,一次请求使用其中的一个。用这个的主要目的是提高程序的可用性。当其中一个进程发生错误,那么也不会影响其他进程。发生错误的进程可以根据规则关闭,而其他的进程则可以继续工作。
  对于IIS6,IIS7,每个应用程序池都会创建一个w3wp.exe进程。但是并不是所有情况都是一个应用程序池对应一个w3wp.exe进程。web garden。或者一些异常发生的时候,就会一个应用程序池对应多个w3wp.exe进程。应用程序池会在没有请求的时候定时回收,或者发生错误的时候,自动重新建立一个处理进程w3wp.exe进程,如果运气好,就会看到没有配置web garden时,一个应用程序池对应多个w3wp.exe进程。
  同样可以对虚拟目录来设置应用程序池,设置方法和设置站点的应用程序池是一样的。同样也可以进行Web Gargen的配置。
  在应用程序池的属性选项卡中,能找到关于IIS对于w3wp进程的监控功能,它提供时间参数设置(隔多少时间来ping一次工作进程),在多少时间内未返回值则将此进程视为timeout,或者死掉的状态,具体数值可以再IIS手册中查到相关值,此时我们可以通过使用程序语言读取系统日志文件来跟踪到此进程的ID,之后可以使用IISAPP.vbs得到该进程对应的应用程序池,从而可以定位到该程序池所对应的应用程序以及可以通过对应用程序池操作来恢复此故障。
  关于HTTP请求的处理(ASP级别)
  IIS 6的ASP.net请求处理过程:
  IIS5.X是通过Inetlnfo.exe监听request并把request分发到work process。换句话说,在IIS5.X中对request的监听和分发是在user mode中进行,在IIS6中,这种工作被移植到kernel mode中进行,所有的这一切都是通过一个新的组件:http.sys来负责。
  PS:免用户应用程序访问或者修改关键的操作系统数据,windows提供了两种处理器访问模式:用户模式(User Mode)和内核模式(kernel mode)。一般地,用户程序运行在user mode下,而操作系统代码运行在kernel mode下,kernel mode的代码允许访问所有系统内存和所有CPU指令。在user mode下,http.sys接收到一个机遇aspx的http request,然后它会根据IIS中的Metabase查看该基于该request的application属于哪个application pool,如果该application pool不存在,则创建之,否则直接将request发送到对应的application pool的queue中。每个application pool对应着一个worker processs:w3wp.exe,毫无疑问他是运行在user mode下的。在IIS Metabse中维护着application pool 和 worker process的Mapping,WAS(Web Administrative Service根据这样一个mapping,将存在于某个application poos queue的request传递到对应的worder process(如果没有,就穿件一个这样的进程)。在worker process初始化的时候,加载ASP.net ISAPI,asp.net ISAPI进而加载CLR,通过APPManagerAppDomainFactory的Create方法为Application穿件一个Application Domain,通过ISAPIRuntime的ProcessRequest处理Request,进而将流程进入到ASP.net http runtime pipeline。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-99522-1-1.html 上篇帖子: 64位IIS上Microsoft.Jet.OLEDB.4.0' 提供者並未登錄於本機電腦上問題解決方案 下篇帖子: IIS中的程序调用SSIS包时的访问限制问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表