zoukankan      html  css  js  c++  java
  • IIS6.0 架构(二)

    4.   W3Core

    4.1.概述

    W3Core又称为工作进程(Worker Process)或W3WP.exe。在默认情况下,IIS 6.0是在工作进程隔离模式下运行的。对于每一个web应用程序,IIS6.0都有一个或多个工作进程实例来运行它。

    在W3SVC的管理和监控下,W3Core负责对用户的web应用程序进行管理。它的主要功能是在一个名为W3Core.dll的动态联接库中实现的。在IIS5.0隔离模式下,这个DLL可以被加载到Inetinfo.exe进程中;在应用程序隔离模式下,这个DLL可以被加载到W3WP.exe进程中。

    4.2.用户web应用程序(web Application,应用程序池(Application Pools)与工作进程(Worker Process)之间的关系

    ü      在IIS6.0中,每一个用户web应用程序都会运行在一个应用程序池中。这个应用程序池可以是IIS默认的应用程序池,也可以是用户自定义的应用程序池。

    ü      作为一个宿主程序,每个应用程序池中都会运行着一个或者多个用户web应用程序。

    ü      在应用程序池中,存在着一个或者多个工作进程。每个工作进程只能属于一个特定的应用程序池,由这些工作进程来负责管理应用程序池中的用户web应用程序。

    他们的结构关系如下图所示:
         
               (图 16)应用程序池

    如果,我们将应用程序池比喻成为一座公寓,那么在公寓里面的那些住户就是一个个web应用程序,而公寓的物业的管理人员就是工作进程。如果公寓比较大,住户比较多,那么就可能需要有多个物业管理人员。也就是说,每个应用程序池里面可以有多个工作进程在工作。

    4.3.W3CoreIIS安全性方面的考虑

    在IIS6.0或更早的版本中,用户的web应用程序是允许运行在进程内的。他们使用系统(System)帐户运行。这个系统帐户是:IWAM_计算机名。因为是在系统帐户下运行,所以这些web应用程序有比较高的权限。

    在IIS6.0中,默认情况下,w3wp.exe的所有实例都在一个权限有限的网络服务帐户下运行。如下图所示:
         
                    (图 17)网络帐户的配置

    当然,用户可以在需要的情况下为W3WP.exe配置新的运行帐户。

    这样做的好处是:一旦一个web应用被攻击成功,攻击者只能访问当时运行的工作进程的帐户有权访问的资源,默认的网络服务帐户不能写入Inetpub文件夹,执行权限也极其有限,所以在一定程度上提高了IIS的安全性。
     

    4.4.W3CoreIIS性能方面的考虑

    在IIS5.0中,由WWW服务负责将用户的http请求转发给web应用程序处理,并负责将web应用程序处理的结果返回给用户。

    这一处理的流程如下图所示:

         
         (图18)用户请求的处理过程

    在这个过程中,数据需要经过多次传递和转化,这些传递和转换主要包括:

    ü       内核模式到用户模式的转化。TCPIP.sys运行在内核模式下,IIS运行在用户模式下。这个转化一项系统开销很大的操作。

    ü       IIS负责对用户的http请求进行监听。

    ü       用户http请求的需址过程。即,确定由哪个web应用程序来处理用户的请求。这一工作需要IIS来完成。

    因此,IIS5.0的这种对用户的http请求的处理过程对IIS的性能有很大的影响。

    在IIS6.0中,除了将WWW服务从Inetinfo.exe进程中独立了出来,作为一个单独的组件(W3SVC)来处理外,还将接收用户http请求的功能从W3SVC中分离了出来。接收用户http请求的功能现在由W3Core来实现。W3SVC仅负责对W3Core进行创建和监控,不再负责对用户http请求进行处理。因此,在处理用户的http请求的时候,内核模式下的HTTP.SYS直接监听用户的http请求,并将用户的http请求直接转发给W3Core。并由W3Core所管理的web应用程序来处理用户的http请求。

    这一操作过程如下图所示:
         
                       (图 19)用户请求的处理过程

    通过这种方式,IIS6.0中处于内核模式下的HTTP.SYS直接与用户应用程序通信。这就缩短了数据的请求、转发过程,提高了IIS的性能。

    5.   应用程序池

    5.1.概述

    作为宿主程序,在应用程序池中存在着一个或者多个web应用程序,并且由一个或者多个工作进程来管理这些web应用程序。在W3SVC的监控和管理下,应用程序池主要负责如下四方面的工作。

    Ø      回收

    Ø      性能

    Ø      运行状况

    Ø      标识

    关于对这四方面的配置,可以在应用程序池的属性页对话框中进行。具体路径如下:开始菜单->管理工具->Internet信息服务管理器->应用程序池->属性。

    5.2.应用程序池的回收功能

    在工作进程隔离模式中,通过配置,IIS可以定期重新启动应用程序池中的工作进程。通过这种机制IIS可以更好地管理那些有错误的工作进程。在默认情况下,当IIS回收一个应用程序池的时候它会使用一种称为overlapped recycle的回收技术。

    在这种回收模式下,失败的工作进程将不会接收新的http请求,当它处理完存储在请求队列中的所有剩余的http请求后,这个进程则正常关闭;或者如果在达到了配置的时间限制、请求数、设置的时间计划,或当达到指定的内存用量限制后仍没有关闭,则明确地终止进程。默认情况下,应用程序池每隔1740分钟(29小时)回收一次。

    为了防止服务中断,在失败的工作进程继续处理存储在请求队列中的剩余的请求的时候,IIS启动了新的工作进程,所有新的http请求都会由给这个新的工作进程处理。在此期间,TCP/IP连接不会丢失。

    关于应用程序池在他方面的功能在前面的章节中已有详细的介绍,这里就不再过多介绍了。

    6.   应用程序隔离模式

    6.1.概述

    如果你的服务器是从windows2000升级到windows2003,那么IIS 5.0也会被升级到IIS6.0,这种情况下,IIS是运行在IIS5.0隔离模式下的;如果你的服务器是新安装的windows2003,那么IIS是运行在工作进程隔离模式下的。因此,在IIS6.0中有两种应用程序隔离模式:IIS5隔离模式和工作进程隔离模式。
     

    6.2.应用程序隔离的目的

    作为一个web应用程序运行的平台,在IIS中将会运行着很多个web应用程序,每个web应用程序的稳定性也各不相同。为了保证IIS的高度稳定性和可靠性,要求在IIS中运行的各个web应用程序彼此相互独立,互不影响。也就是说某一个web应用程序的崩溃不会导致其他web应用程序的崩溃或者整个IIS的崩溃。因此,在IIS中提出了应用程序隔离的概念。

    6.3.IIS5.0中的做法

    在IIS5.0中,对应用程序的隔离主要有如下几个要点:

    Ø       还不存在HTTP.SYS驱动程序,对用户http请求的监听功能由Inetinfo.exe进程实现。

    Ø       WWW服务位于Inetinfoexe进程之中。所以WWW服务的稳定性也会影响到整个IIS的稳定性。

    Ø       提供了三个不同级别的应用程序保护,即低级别,中级别,高级别。关于应用程序保护级别的详细情况,请见。。。。节。

    Ø       存在进程之间互相通信的问题,加大了系统开销。

    IIS5.0中,对应用程序进行隔离的结构如下图所示:


            (图 20)IIS 5.0的应用程序隔离情况

    当一个http请求到底以后,首先由TCPIP.SYS将请求传递给Inetinfo.exe中的WWW服务,然后再由WWW服务转发给DLLHost.exe进程中的web应用程序处理。在这里就存在了一个进程之间通信的问题,必然会引起一些大的系统开销。

    WWW服务仅仅负责对DLLHost.exe宿主进程地创建。当这些宿主进程创建完毕后,WWW服务就不会再对它进行管理。

    根据应用程序保护级别的不同,web应用程序的隔离程度也各不相同。在低级别的隔离模式中,web应用程序的运行效率最高,但是,由于它直接运行在WWW服务的进程之中,所以它对整个IIS的稳定性的影响也最大。在高级别的隔离模式中,每一个web应用程序都运行于一个属于它的宿主进程(DLLHost.exe)中,虽然这个web应用程序的运行效率降低了,但是,由于它被隔离在一个特定的宿主进程之中运行,所以它对整个IIS系统的稳定性的影响也减小了,一个web应用 

    程序的崩溃不会影响到其他web应用程序以及整个IIS系统的运行。

    6.4.IIS5.0隔离模式

    在IIS6.0中,为了考虑应用程序的兼容性,因为某些web应用程序可能依赖于IIS5.0的架构。比如,某些Web应用,特别是有些Internet Server API(ISAPI)筛选器,在进程外运行时可能会遇到问题。在IIS 5.0和IIS 4.0中,ISAPI筛选器总是运行在进程Inetinfo.exe之内的,它们的设计目标本来就不是运行在进程之外的,正是由于这些原因,某些筛选器在IIS 6.0的工作进程隔离模式中运行时可能会出现问题。因此,IIS6.0提供了另一种应用程序隔离模式:IIS5.0隔离模式。IIS5.0隔离模式的结构图如下图所示:

         
                        (图 21)IIS5.0隔离模式

    在IIS6.0中,IIS5.0隔离模式主要有如下几个要点:

    Ø       在内核模式中实现了HTTP.SYS驱动程序,由它负责对http请求的监听。

    Ø       WWW服务从Inetinfo.exe进程之中独立了出来。并且由WWW服务负责对宿主进程(DLLHost.exe)的创建和管理。与IIS5.0不同,WWW服务创建了宿主进程DLLHost.exe之后还负责对它进行管理,比如监听它的状态,运行情况等。

    Ø       WWW服务负责对http请求进行转发。当用户的http请求从HTTP.SYS驱动程序传递过来以后,由WWW服务负责将这个请求传递个相关的web应用程序处理,并将处理结果返回。

    Web应用程序允许运行在Inetinfo.exe进程之中,也可以运行在DLLHost.exe宿主进程之中。

    6.5.工作进程隔离模式

    工作进程隔离模式是IIS6.0所提供的全新的应用程序隔离模式。它的组成结构如下图所示:
          
                       (图 22)工作进程隔离模式

    在IIS6.0中,工作进程隔离模式主要有如下几个要点:

    Ø       在内核模式中实现了HTTP.SYS驱动程序,由它负责对http请求的监听。

    Ø       WWW服务从Inetinfo.exe进程之中独立了出来,它运行在了新的进程SVCHost.exe之中。

    Ø       WWW服务只负责对应用程序池的创建和管理。

    Ø       HTTP.SYS驱动程序直接与应用程序池中的工作进程(Worker Process)通信。

    Ø       一个应用程序池中可以运行一个或者多个web应用程序,并且由一个或者多个工作进程来管理它们。

    Ø       工作进程(Worker Process)之中实现了原来WWW服务的功能:接收HTTP.SYS转发过来的用户http请求。WWW服务将不再负责这部分工作。

    7.   Web

    在一个应用程序池中存在着一个或者多个web应用程序,并且由这个应用程序池中一个或者多个工作进程来管理这些web应用程序。如果在一个应用程序池中存在着多个工作进程的话,那么就形成了一个web园(Web Gardens)。

    关于Web园的配置,如下图所示,只需要将“最大工作进程数”的值设置为大于1的值就可以了。

           
                      (图 23)配置Web园

    这样做的好处是:提高了处理用户http请求的效率;当一个工作进程坏掉之后,其他的工作进程仍然能够处理用户的请求,保证了系统的稳定性和可靠性。

  • 相关阅读:
    zt 五子棋判断禁手的一些资料 学习ing
    acwing 242. 一个简单的整数问题
    acwing 241. 楼兰图腾
    leetcode 1309 Decrypt String from Alphabet to Integer Mapping
    leetcode 1310. XOR Queries of a Subarray
    acwing 1250. 格子游戏 并查集
    MongoDB shell操作
    MongoDB shell操作
    How to retreive raw post data from HttpServletRequest in java
    How to retreive raw post data from HttpServletRequest in java
  • 原文地址:https://www.cnblogs.com/andyyu/p/1783001.html
Copyright © 2011-2022 走看看