本文是转载。

上一篇 / 下一篇  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。

转载于:https://www.cnblogs.com/xyang/archive/2012/02/14/2351027.html

深入理解IIS工作原理相关推荐

  1. 深入理解 Cache 工作原理

    欢迎关注方志朋的博客,回复"666"获面试宝典 大家好,今天给大家分享一篇关于 Cache 的硬核的技术文,基本上关于Cache的所有知识点都可以在这篇文章里看到. 关于 Cach ...

  2. 深入理解Cache工作原理

    大家好,今天给大家分享一篇关于 Cache 的硬核的技术文,基本上关于Cache的所有知识点都可以在这篇文章里看到. 关于 Cache 这方面内容图比较多,不想自己画了,所以图都来自<Compu ...

  3. 深入理解Nginx工作原理

    1 反向代理 1.1 概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给intern ...

  4. 深入理解HTTPS工作原理

    前言 近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器.搜索引擎.CA机构.大型互联网企业的共同促进下,互联网迎来了"HTT ...

  5. MVC — 初步理解IIS工作流程

    声明:本文只是自己的总结和积累.IIS7.x 目录 IIS流程及组成部分 ASP.NET流程及组成部分 IIS与ASP.NET  MVC 一.IIS流程及组成部分 1.Http.SYS:负责监听HTT ...

  6. 理解GRUB2工作原理及配置选项与方法

    GRUB2是借鉴GRUB改写到更加安全强大到多系统引导程序,现在大部分较新的Linux发行版都是使用GRUB2作为引导程序的. GRUB2采用了模块化设计,使得GRUB2核心更加精炼,使用更加灵活,同 ...

  7. (转载)Struts2源码粗略分析四:理解xwork工作原理

    http://blog.csdn.net/rcom10002/article/details/6044463 转载于:https://www.cnblogs.com/eecs2016/articles ...

  8. lstm需要优化的参数_使用PyTorch手写代码从头构建LSTM,更深入的理解其工作原理...

    这是一个造轮子的过程,但是从头构建LSTM能够使我们对体系结构进行更加了解,并将我们的研究带入下一个层次. LSTM单元是递归神经网络深度学习研究领域中最有趣的结构之一:它不仅使模型能够从长序列中学习 ...

  9. lstm中look_back的大小选择_使用PyTorch手写代码从头构建LSTM,更深度的理解其工作原理

    这是一个造轮子的过程,但是从头构建LSTM能够使我们对体系结构进行更加了解,并将我们的研究带入下一个层次. LSTM单元是递归神经网络深度学习研究领域中最有趣的结构之一:它不仅使模型能够从长序列中学习 ...

最新文章

  1. Debug不崩溃Release版本崩溃的一种原因
  2. Django_博客_XSS 攻击防范
  3. Latex 数学符号表
  4. html select显示树形菜单_HTML标签总结
  5. 什么是 Angular 的多级注入器
  6. python解压_python解压
  7. 手机html文件转TXT,Html 转换 Txt
  8. 分享整理的 Python 学习路线图,(附工具+视频+书籍+面试)
  9. Kotlin — 使用IDEA运行第一个Kotlin程序,打印“Hello World”!
  10. php502 html正常访问,php-fpm 正常启动,nginx也正常启动,但是为什么访问PHP是502
  11. 营收环比增幅近50%,星巴克在经历“劫”后重生吗?
  12. php 时间 增加天数,php实现当前时间加天数的方法
  13. linux 终止一个前台进程,Linux中前台起动的进程怎么结束?
  14. JAVA实现ECC加密 eclipse
  15. 数据库原理与应用~第三版课后习题答案(何玉洁 编著)
  16. 公有云、私有云及混合云应用场景辨析
  17. PSD95抗体研究丨SYSY PSD95抗体结果图展示
  18. python interpreter是什么_如何写一个Python Interpreter | 学步园
  19. 超声波水下通讯测试接收发射信号的完整性
  20. RDS数据库空间满了怎么办?

热门文章

  1. python垃圾分类准确率计算公式_准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure...
  2. c++ 文件读写_串行FLASH 文件系统FatFs
  3. PAT甲级1017 (模拟排序)
  4. PAT甲级1016 (map,排序)
  5. android支付宝余额怎么做,android实现类似于支付宝余额快速闪动的效果
  6. php分支结构有哪几种语句,PHP开发——分支结构
  7. oracle数据库集群采用的是形式,铁道部采用Oracle集群数据库进行TMIS系统“三级建库”...
  8. java+创建metaq生产者_微服务架构【技术点4】windows下rocketMQ配置及java端生产者消费者配置-Go语言中文社区...
  9. sd卡座封装尺寸_讯普电子SD卡座的引脚定义
  10. 用vector编写一个矩阵模板