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请求的效率;当一个工作进程坏掉之后,其他的工作进程仍然能够处理用户的请求,保证了系统的稳定性和可靠性。

  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/andyyu/p/1783001.html
Copyright © 2011-2022 走看看