IIS使用指南之一 :IIS 6 新特性

 

可能很多朋友使用Windows Server 2003是因为IIS 6 的强大性能吧,和Windows 2000中包含的IIS 5 相比,IIS 6更为安全和稳定,最重要的是具有更高的性能,那么,为什么IIS 6会具有更高的性能呢?

 

IIS 5 和 IIS 6 的架构比较

这点需要从IIS 5的架构说起。IIS 5的架构如下图所示,

IIS 5 的所有组件都工作在用户模式中,核心组件INETINFO侦听WinSock端口(例如常见的TCP 80端口)。当HTTP访问请求到达时,工作在内核模式的TCP/IP驱动将其直接路由到INETINFO进程,INETINFO进程自己本身对此请求进行处理或者将其交付扩展组件(如ISAPI扩展)进行处理。IIS 5 使用COM+提供的DLLHOST基础结构方式进行工作,这种方式具有以下缺陷:

  • 在INETINFO中执行第三方代码;这样的后果是如果执行的代码有问题,那么会导致整个Web服务器停止工作;

  • 如果执行的代码工作在OOB方式,那么可能需要多次用户模式到用户模式的转换,这降低了执行效率;

  • Web服务器上的所有Web站点工作在一个应用程序池内,无法实现隔离;

 

针对IIS 5中的种种问题,微软将IIS 5的代码推倒重来,重新设计了IIS 6并在Windows Server 2003中提供。IIS 6的架构如下图所示,

可以从上图中看到,INETINFO进程虽然也存在,但是已经不再处理HTTP请求,而是处理FTP、SMTP和NNTP等非HTTP请求了。在IIS 6中,Web服务组件由以下三个组件构成:

  • 运行在内核模式的HTTP.sys(HTTP协议栈);

  • 运行在用户模式的WAS(Web Admin Service,包含于W3SVC服务中);

  • 运行在用户模式的工作进程(WP,Worker Process)

 

HTTP.sys(HTTP协议栈)

HTTP.sys是工作在内核模式的HTTP请求侦听器,它的架构如下图所示:

HTTP.sys不会执行外部代码,它具有以下作用:

  • 侦听和分析HTTP请求,支持IPv4和IPv6;

  • 根据URL命名空间将接收到的HTTP请求路由到不同的工作进程;如果请求的URL并不位于本地的URL命名空间范围中,则返回400错误;

  • 将HTTP请求进行队列缓存;

  • 在内核模式中缓存静态的和无需身份验证的内容响应;这极大的提高了Web服务的响应速度,增强了Web服务器的性能。

  • 支持PAE内存寻址方式,在x86上支持的内存容量为64GB;

 

 

WAS(W3SVC)

WAS包含于W3SVC服务中,它负责管理IIS 6中的配置、应用程序池和工作进程,它工作在用户模式,但不会执行外部代码。

它主要具有以下作用:

  • 配置HTTP.sys;

  • 管理应用程序池;

  • 创建工作进程;

  • 工作进程回收;

  • 工作进程状态监视;

  • 工作进程快速失败保护;

  • 支持孤立工作进程以进行调试等;

 

工作进程(WP,Worker Process)

在介绍工作进程之前,需要先介绍应用程序池。应用程序池定义了可以共享工作进程的Web应用程序(Web站点)的集合,你可以认为它是一组URL命名空间,属于此URL命名空间范围中的Web站点将共享此应用程序池中的工作进程,而HTTP.sys是根据应用程序池所定义的URL命名空间将接收到的HTTP请求路由到此应用程序池对应的工作进程。

和IIS 5 中只能使用一个应用程序池不同,在IIS 6 中你可以创建多个应用程序池,并将不同的Web站点(Web应用程序)分配到不同的应用程序池中,一个应用程序池可以具有一个或多个Web应用程序。不同应用程序池之间是完全隔离的,某个应用程序池出现故障时不会影响其他应用程序池;这样当属于某个应用程序池的Web站点因为代码编写问题而导致停止服务时,不会影响到使用其他应用程序池的Web站点,这最大的实现了Web服务器的高可用性。

在IIS 6中提供了Web园功能,支持使用超过1个的工作进程,并且支持在SMP系统中为工作进程分配CPU亲缘关系,让其只在某些CPU上运行。

工作进程则是真正用于处理客户发送的HTTP请求的组件,你可以认为它是一个全功能的Web服务器,就像一个微型的IIS 5 服务器一样。当HTTP.sys决定将接收到的HTTP请求路由到某个应用程序池时,它是将HTTP请求路由到此应用程序池对应的工作进程进行处理;工作进程处理HTTP请求,如果需要则加载其他组件(ISAPI扩展或过滤器等等)进行处理,并将处理结果返回给HTTP.sys。

 

当客户发起HTTP连接请求时,IIS 6完整的处理过程如下:

  • 在W3SVC服务启动时,WAS即启动,并且根据metabase.xml中的设置来配置HTTP.sys;

  • 当HTTP.sys接收到HTTP请求时,分析其URL命名空间,如果在自己的响应缓存中具有匹配值则直接从缓存中获取响应并返回给客户,如果没有匹配值则根据WAS提供的URL命名空间 范围来决定由哪个应用程序池处理此HTTP请求;

  • 如果此应用程序池当前没有工作进程,那么HTTP.sys通知WAS为其创建一个新的工作进程;

  • HTTP.sys将接收到的HTTP请求路由到对应的工作进程中,工作进程处理此HTTP请求然后将结果返回给HTTP.sys,并且根据缓存活动算法来告知HTTP.sys是否缓存此结果;

  • HTTP.sys将请求的处理结果返回给原始客户,并根据工作进程的提示来决定是否保存此处理结果到自己的缓存中。

  • IIS 6 新特性

    从上面的比较可以看出,IIS 6 和 IIS 5 相比在可靠性、扩展性和安全性上都具有很大的提升,它主要具有以下新特性:

    • 可靠性:由于Web应用程序在不同的工作进程中执行,并且基于WAS完善的隔离、监控和恢复机制,当某个应用程序池出现问题时,不会影响其他应用程序池并且能够得到最快的恢复。

    • 扩展性:通过全新设计的架构,IIS 6显著的提高了Web服务器的吞吐量和性能,从而在以下方面得到了提高:

      • IIS 6 Web服务器可以架设的Web站点数;

      • 并发活动工作进程数;

      • Web服务器或Web站点的启动和停止性能;

      • Web服务器可以处理的并发请求数;

    • 安全性:和安装Windows 2000服务器时会默认安装IIS 5并启用ASP支持不同,在安装Windows Server 2003 标准版/企业版/数据中心版时默认并不会安装IIS 6,并且在安装IIS 6时,默认只能访问静态内容并且禁止使用父路径访问。管理员可以根据自己的需要在IIS管理器中启用或禁用Web服务扩展。

    • 可管理性:为了迎合企业中管理的需要,IIS 6中提供了多种管理工具,例如你可以通过IIS管理器、运行脚本或者直接修改IIS Metabase来配置IIS,你也可以安装IIS的远程管理组件来进行远程管理。

    • 增强开发支持:在IIS 6中提供了ASP.NET的支持,并且也支持XML、SOAP和IPv6。

     

     

    IIS 6 中的应用程序隔离模式

    和IIS 5 的架构相比,IIS 6 的新架构具有更高的性能、稳定性和可用性,但是IIS 6这种新架构所运行的隔离模式(工作进程隔离模式)不支持使用以下特性的Web应用程序:

    • COM+ OOB;

    • 会话状态保存在工作进程中:在回收工作进程时会话状态就会丢失(IIS 6 中默认会在一定空闲时间后回收工作进程);

    • 多实例ISAPI:为由多个进程加载所编写的并且并发运行的 ISAPI 应用程序。

    • 工作外进程:所编写的将请求转给其他工作进程的应用程序。

    不过微软为了保持后向兼容,在IIS 6 中除了提供工作方式如上文所描述的工作进程隔离模式外,还提供了工作方式几乎和IIS 5一样的IIS 5 隔离模式,当工作在IIS 5 隔离模式下,IIS 6的架构如下图所示:

     

     

    当IIS 6 工作模式为IIS 5 隔离模式时,它和IIS 5 的工作方式基本一样。而当IIS 6 工作在工作进程隔离模式下时,根据IIS 6的新架构,在隔离环境中运行所有应用程序代码,并且由于在应用程序池间切换所需要的指令很少,在隔离方式下运行代码并不会带来性能的降低。工作进程隔离模式和目前的绝大部分Web站点和Web应用程序兼容,并且可以获得更高的安全性和性能,和IIS 5 隔离模式相比,运行在工作进程隔离模式主要具有以下好处:

    • 支持使用多个应用程序池,并且每个应用程序池可以具有不同的配置;而IIS 5 隔离模式只能使用一个应用程序池并且不能进行配置;

    • 工作进程的运行账户为网络服务账户而不是IIS 5 隔离模式中的本地系统账户;

    • 支持在一个应用程序池中使用多个工作进程;支持工作进程CPU亲缘关系设定;支持工作进程回收以减少系统资源的占用;支持工作进程状态监控; 支持工作进程快速失败保护;支持孤立工作进程以进行调试等;

    • 在应用程序池之间完全隔离;

    因此强烈推荐你将IIS 6运行在工作进程隔离模式下,除非你的Web应用程序明确说明不支持运行在此模式下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提取出的文件目录表,仅供参考: ACHG.AS_ ACWEBSVC.DL_ ADMWPROX.DL_ ADROT.DL_ ADSIIS.DL_ ADSUTIL.VB_ AEXP2B.AS_ AEXP4B.AS_ APPS.CH_ APPS.IN_ APPSRV.MS_ APPSTAR2.AN_ APPSTAR3.AN_ APPSTART.AN_ APPS_SP.CH_ APPWIZ.CP_ ASP.DL_ ASP.MF_ ASP.MO_ ASPNETOC.DL_ ASPPERF.DL_ ASPSTD.IN_ AXCTRNM.H2_ AXPERF.IN_ BROWSCAP.DL_ BROWSCAP.IN_ CERTCARC.AS_ CERTCKPN.AS_ CERTDFLT.AS_ CERTFNSH.AS_ CERTLYNX.AS_ CERTMAP.OC_ CERTOBJ.DL_ CERTRMPN.AS_ CERTRQAD.AS_ CERTRQBI.AS_ CERTRQMA.AS_ CERTRQUS.AS_ CERTRQXT.AS_ CERTRSDN.AS_ CERTRSER.AS_ CERTRSIS.AS_ CERTRSOB.AS_ CERTRSPN.AS_ CERTSCES.AS_ CERTWIZ.OC_ CIMWIN32.MF_ CIMWIN32.MO_ CLI.MO_ CLIEGALI.MF_ CLIEGALI.MO_ CLUSWMI.MO_ CNFGPRTS.OC_ COADMIN.DL_ CONTROT.DL_ CONVLOG.EX_ DAVCDATA.EX_ DAVCPROX.DL_ DNSETW.MO_ DNSPROV.MO_ DSPROV.MF_ DSPROV.MO_ EVNTRPRV.MO_ EVTGPROV.MO_ EXSTRACE.DL_ FTP.EX_ FTP.MI_ FTPCTRS.H2_ FTPCTRS.IN_ FTPCTRS2.DL_ FTPMIB.DL_ FTPSVC2.DL_ GZIP.DL_ HNETCFG.MO_ HTTP.MI_ HTTP.SY_ HTTPAPI.DL_ HTTPEXT.DL_ HTTPMIB.DL_ HTTPODBC.DL_ IEINFO5.MO_ IIRSP.SY_ IIS.DL_ IIS.IN_ IIS.MS_ IIS6.CAB IISADMIN.DL_ IISADMIN.MF_ IISADMIN.MO_ IISAPP.VB_ IISBACK.VB_ IISCFG.DL_ IISCLEX4.DL_ IISCNFG.VB_ IISDG.CH_ IISEXT.DL_ IISEXT.VB_ IISFTP.VB_ IISFTPDR.VB_ IISLOG.DL_ IISMAP.DL_ IISMUI.DL_ IISNTS.CH_ IISPWCHG.DL_ IISRES.DL_ IISRESET.EX_ IISRG.CH_ IISRSTAP.DL_ IISRSTAS.EX_ IISRTL.DL_ IISSCHLP.WS_ IISSMMC.CH_ IISSUBA.DL_ IISUI.DL_ IISUIOBJ.DL_ IISUTIL.DL_ IISVDIR.VB_ IISW3ADM.DL_ IISWEB.VB_ IISWMI.DL_ IISWMI.MF_ IISWMI.MO_ IKCH8XX.IN_ ILS.DL_ INETCFG.DL_ INETCOMM.DL_ INETCORP.AD_ INETCPL.CP_ INETCPLC.DL_ INETFIND.XM_ INETINFO.EX_ INETMGR.DL_ INETMGR.EX_ INETMIB1.DL_ INETOPTS.XM_ INETPP.DL_ INETPPUI.DL_ INETPREF.XM_ INETRES.AD_ INETRES.CH_ INETRES.DL_ INETSET.AD_ INETSRCH.XM_ INETSRV.MI_ INFOADMN.DL_ INFOCOMM.DL_ INFOCTRS.DL_ INFOCTRS.H2_ INFOCTRS.IN_ INFOSOFT.DL_ INFOSPBZ.BM_ INFOSPCE.BM_ IPP_0001.AS_ IPP_0002.AS_ IPP_0003.AS_ IPP_0004.AS_ IPP_0005.AS_ IPP_0006.AS_ IPP_0007.AS_ IPP_0010.AS_ IPP_0013.AS_ IPP_0014.AS_ IPP_0015.AS_ ISAPIPS.DL_ ISATQ.DL_ ISCOMLOG.DL_ KRNLPROV.MF_ KRNLPROV.MO_ LICWMI.MF_ LICWMI.MO_ LOGSCRPT.DL_ LOGTEMP.SQ_ LOGUI.OC_ LONSINT.DL_ METADATA.DL_ MSDTCTR.MO_ MSI.MF_ MSI.MO_ MSMQTRC.MO_ NCPROV.MF_ NCPROV.MO_ NEXTLINK.DL_ NLBMPROV.MO_ NNTPADM.DL_ NNTPAPI.DL_ NNTPSNAP.CN_ NNTPSNAP.DL_ NNTPSNAP.HL_ NTEVT.MF_ NTEVT.MO_ P3CMINC.AS_ P3DM.AS_ P3DMDEL.AS_ P3DMLOCK.AS_ P3DMNEW.AS_ P3MB.AS_ P3MBDEL.AS_ P3MBGOTO.AS_ P3MBLOCK.AS_ P3MBNEW.AS_ P3MSPROP.AS_ PAGE1.AS_ POLICMAN.MF_ POLICMAN.MO_ REGEVENT.MF_ REGEVENT.MO_ REPLPROV.MO_ RPCREF.DL_ RSOP.MF_ RSOP.MO_ RWINSTA.EX_ RWNH.DL_ SCERSOP.MO_ SCM.MO_ SCRCONS.MF_ SCRCONS.MO_ SECRCW32.MF_ SECRCW32.MO_ SEO.DL_ SMTPADM.DL_ SMTPAPI.DL_ SMTPCONS.DL_ SMTPCONS.MF_ SMTPCONS.MO_ SMTPSNAP.CN_ SMTPSNAP.DL_ SMTPSNAP.HL_ SNMPREG.MO_ SNMPSMIR.MO_ SSINC.DL_ STAXMEM.DL_ SUBSCRPT.MO_ SVCEXT.DL_ SYSTEM.MO_ TRUSTMON.MO_ TSCFGWMI.MF_ TSCFGWMI.MO_ UIHELPER.DL_ URL.DL_ URLAUTH.DL_ URLMON.DL_ VDS.MF_ VDS.MO_ VSS.MF_ VSS.MO_ W3CACHE.DL_ W3COMLOG.DL_ W3CORE.DL_ W3CORE.MF_ W3CORE.MO_ W3CTRLPS.DL_ W3CTRS.DL_ W3CTRS.H2_ W3CTRS.IN_ W3DT.DL_ W3DT.MF_ W3DT.MO_ W3EXT.DL_ W3ISAPI.DL_ W3ISAPI.MF_ W3ISAPI.MO_ W3SSL.DL_ W3TP.DL_ W3WP.EX_ WAM.DL_ WAMPS.DL_ WAMREG.DL_ WAMREGPS.DL_ WBEMCONS.MF_ WBEMCONS.MO_ WHQLPROV.MO_ WINOLDAP.MO_ WLBSPROV.MF_ WLBSPROV.MO_ WMI.MF_ WMI.MO_ WMIPCIMA.MF_ WMIPCIMA.MO_ WMIPDFS.MF_ WMIPDFS.MO_ WMIPDSKQ.MF_ WMIPDSKQ.MO_ WMIPICMP.MF_ WMIPICMP.MO_ WMIPIPRT.MF_ WMIPIPRT.MO_ WMIPJOBJ.MF_ WMIPJOBJ.MO_ WMIPSESS.MF_ WMIPSESS.MO_ WMITIMEP.MF_ WMITIMEP.MO_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值