可能很多朋友使用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 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应用程序明确说明不支持运行在此模式下。
分享到:
相关推荐
继承了LeadWit CMS.ASP产品的全部功能,并增加诸多新特性和功能设计,可广泛应用于行业门户、政 府、教育、个人爱好者等的上网工程。 LeadWit CMS.NET提供了简易的操作、丰富的功能、完善的权限管理,并且非常安全...
第6卷 深入开发IIS 5本书深入探讨了IIS 5的新特性和体系结构,包括增强的管理、安全和应用的支持能力,并详细阐述如何从包括IIS 4.0在内的其他Web服务器向IIS 5进行设置、内容和应用程序的迁移,如何优化和调整IIS...
ASP.NET 2.0+SQL Server 2005全程指南 目录 基础篇 第1章 ASP.NET概述及环境配置 1.1 认识ASRNET 1.1.1 .NET Framework框架 1.1.2 ASP.NET功能与特性 1.1.3 ASP.NET与ASP的区别 1.2 搭建ASP.NET开发环境 1.2.1...
NET委托:一个C#睡前故事 [推荐] - [原创] Microsoft .NET策略及框架概述 卸载Class? Web Form 窗体 如何实现web页面的提示保存功能 在ASP.Net中两种利用CSS实现多界面的方法 如何在客户端调用服务端代码 页面一...
Tomcat 简明中文版用户指南第一部分 Apache Tomcat 4.0的新特性 Tomcat3.1新特性 如何在Windows 9x环境中配置Apache + Tomcat.JSP JSWDK环境安装与配置 Resin服务器平台介绍 Resin在IIS中的安装...
一 系统简介 在线试衣系统是一款基于flex php mysql的免费试衣软件。支持更换背景 发型等。并能将最终试穿效果生成图片。提供完善的后台管理。所有衣服等都能通过后台添加删除。并能快速的集成到您已有的商城系统中...
TAYGOD免费企业建站系统是一款开源的免费程序,您可以 TAYGOD免费企业建站系统ASP版是一款基于asp+access的免费开源建站系统。整套系统的设计构造,完全考虑中小企业类网站的功能要求,网站后台功能强大,管理简捷...
它可以与IIS、Apache、节点一起使用。js、Litespeed Nginx,…… 我可以将自己的Javascript库/CSS与自动生成的代码混合在一起吗? 是的,现有的Javascript库和框架可以使用。对于jQuery和jQuery UI控件,有现成的支持...
Drupal专业开发指南 第22章 Drupal优化(1) - g089h515r806的专栏 - CSDNBlog.mht 由Table_locks_waited想到的mysql 表锁问题_含笑的波浪在逐浪.mht MySQL优化经验 key_buffer_size,query_cache_size,table_cache....
由于网 络方便、快速的特性,成为我们寻求旅游信息的最佳利器,根据交通部观光局2002年3月 6日的统计资料显示,台湾地区旅社共有1850家,分公司有627家,参与旅游电子商务网 站共有3700个大大小小的网站。...
Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为...
现在公司的园区网络要进行规划和实施,现有条件如下 :公司已租借了一个公网的ip地址为222.206.160.1,和isp提供的一个公网dns服务器的 ip为222.206.160.2园区网络和分支机构使用192.168.1.0网络,并进行必要的子网...
现在公司的园区网络要进行规划和实施,现有条件如下 :公司已租借了一个公网的ip地址为222.206.160.1,和isp提供的一个公网dns服务器的 ip为222.206.160.2园区网络和分支机构使用192.168.1.0网络,并进行必要的子网...
现在公司的园区网络要进行规划和实施,现有条件如下 :公司已租借了一个公网的ip地址为222.206.160.1,和isp提供的一个公网dns服务器的 ip为222.206.160.2园区网络和分支机构使用192.168.1.0网络,并进行必要的子网...
现在公司的园区网络要进行规划和实施,现有条件如下 :公司已租借了一个公网的ip地址为222.206.160.1,和isp提供的一个公网dns服务器的 ip为222.206.160.2园区网络和分支机构使用192.168.1.0网络,并进行必要的子网...
一系统简介 新生代在线试衣系统是一款基于flex+php+mysql的免费试衣软件。支持更换背景发型等。并能将最终试穿效果生成图片。提供完善的后台管理。所有衣服等都能通过后台添加删除。并能快速的集成到您已有的商城...
一系统简介 TAYGOD免费企业建站系统是一款开源的免费程序,您可以 TAYGOD免费企业建站系统ASP版是一款基于asp+access的免费开源建站系统。整套系统的设计构造,完全考虑中小企业类网站的功能要求,网站后台功能强大...
<p><fontface>一系统简介</font></p> <p><fontface>新生代企业网站管理系统 CompanyContentManagementSystem 新生代企业网站管理系统是一款基于php+mysql+samrty的免费开源建站系统。整套系统的设计构造,完全考虑...