专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »服务器 » iis6.0:深入剖析Windows IIS 6.0(2) »正文

iis6.0:深入剖析Windows IIS 6.0(2)

来源: 发布时间:星期日, 2009年1月11日 浏览:57次 评论:0
   3、全新内核

  从体系结构上看IIS 5.0和IIS 4.0其实是:它们都是在用户模式下运行发布Web内容应用或者在Inetinfo进程的内以帐户运行或者在Inetinfo进程的外以IWAM用户运行虽然在较重负载下IIS 5.0也有相当出色表现;不过从IIS 6.0开始我们对IIS底层结构看法应该改变了为了使IIS不仅能够轻松地支持1000个Web网站WebSite而且能够支持10000个甚至更多网站WebSite同时还要提高Web服务器安全性和可靠性微软放弃了原有IIS内核重新构造了

  另个促使微软重新构建IIS内核原因是微软(以及其他厂商)认识到Web服务器性能和可靠性问题绝大部分是由于质量低劣Web应用造成IIS 5.0通过带缓冲池Out of Process容器减轻这类问题在IIS 5.0中在Out of Process池中运行应用旦崩溃般不会波及到IIS本身应用在Inetinfo的外进程中运行但运行在Out of Process池的内所有Web应用都会终止——在默认情况下所有应用都在该池的中运行在这种情况下排解故障很不容易要确定哪个应用导致了问题非常困难IIS 6.0将监听请求、创建和监视Web网站WebSite、运行Web服务这些区别任务隔离了开来新型体系可望解决IIS 5.0存在问题从理论上看体系将极大地改善可用性、安全和性能;从实际情况看根据微软和Beta测试者报告体系令稳定性和性能有了奇迹般地提高IIS 6.0内核体系主要建立在 3个组件的上:W3SVChttp.sys以及W3Core

  ■ W3SVC

  W3SVC也许是IIS 6.0体系中最不令人注意组件不过这并不介绍说明它不重要W3SVC任务是根据配置数据设置创建和监视工作线程由工作线程运行Web网站WebSite应用在IIS 5.0中和IIS 6.0 W3SVC组件最接近是IIS管理服务IIS管理服务是Inetinfo部分;因此如果Inetinfo出现问题IIS管理服务也会出现问题而且此时IIS管理服务不能再重新启动Inetinfo或其他故障应用在IIS 6.0中W3SVC作为个独立进程运行Web应用故障不可能波及W3SVCW3SVC的内根本没有第 3方代码运行W3SVC总是处于运行状态因此它能够监视Web应用健康状况并在必要时采取行动由于这策略服务器能够根据用户指定参数监视和重新启动应用

  ■ http.sys

  IIS 6.0体系设计中最重大变化是加入了http.sys驱动http.sys驱动任务是处理HTTP请求而且它在内核模式下执行操作不要小看这改变将处理HTTP请求任务从IIS 5.0、IIS 4.0用户模式改变到IIS 6.0内核模式标志着新代IIS服务器诞生

  在Win 2K和NT 4.0中IIS在用户模式下运行运行在用户模式下应用不直接和硬件通信它们直接些标准过程这些标准过程或者将数据传入内核模式组件(例如网卡驱动图形子系统)或者内核模式组件以此完成保存文件、设置IP地址、将HTML文件发送到网络的类任务

  用户模式和内核模式的间转换是项开销很大操作服务器首先从内核模式TCP/IP栈将传入HTTP请求传递给用户模式Winsock由Winsock将请求传递给IIS从内核模式到用户模式切换很快发生但不可避免地给处理过程带来瞬间延迟当负载较大时这种延迟不断累加同时由于这种转换是必不可少所以管理员根本没有办法优化处理过程

  IIS 6.0https.sys内核模式驱动极大地减少了用户模式和内核模式的间切换次数http.sys监听着HTTP请求决定由哪个用户模式进程来处理该请求或者是否由驱动本身返回用户请求内容

  IIS 6.0在用户模式下运行完全依赖内核模式http.sys作为接收用户请求服务器引擎因此http.sys必须能够在任何时候作出相应必须具有极高可靠性用户代码可能导致进程出错所以微软把http.sys设计成不执行任何用户代码这样即使应用出现了故障也不会影响到IIS 6.0本身IIS 6.0仍能够照常监听HTTP请求

  如果要从内核模式缓冲区返回静态应答个高速、内核模式、不允许运行应用代码HTTP处理器是十分理想它减少了切换到用户模式昂贵开销能够从内核模式缓冲区快速返回应答IIS 6.0http.sys就管理着这样个缓冲区而且使用了高度优化启发式缓冲区算法来确定哪些内容要放入缓冲区例如http.sys可能只缓冲那些出现了次以上请求内容

  由于http.sys直接从应答缓冲区提取静态内容不必再切换到用户模式所以和IIS 5.0性能相比IIS 6.0整体性能有了显著提升根据微软资料显示WebBench基准测试表明IIS 6.0返回静态内容速度要比IIS 5.0快150%即使以IIS 5.0隔离模式运行IIS 6.0服务器(这时IIS 6.0体系结构和IIS 5.0相似)同样也能从http.sys驱动应答缓冲区和其他改进的处获益

  另外微软在http.sys驱动中采用了许多优化算法使其能够将请求直接转发到适当工作进程在IIS 4.0和IIS 5.0中必须通过多个步骤才能确定进程个例子拥有了应当接收当前请求Web应用但在IIS 6.0中http.sys注册了所有IIS 6.0应用赋予每个进程个句柄IIS内部利用这些句柄来标识注册应用要用到个或多个名称空间因此当http.sys接收到个HTTP请求它能够很快地将请求从内核模式http.sys传递到正确用户模式Web应用

  http.sys驱动还要执行其他些任务其中包括:

  ⑴ 将传入URL和各种长度、格式方面规则进行比较   ⑵ 管理传入请求队列

  ⑶ 担负着记录IIS Web网站WebSite日志信息任务(从而提高了记录日志性能)

  ⑷ 实施带宽限制策略以及支持TCP/IP级管理

  ⑸ 实现客户证书请求服务(但不支持安全套接字层——SSL)

  由于http.sys是个操作系统驱动而不是个IIS组件因此该驱动配置在注册表而不是IIS配置数据中进行当前还有许多http.sys注册表设置项目尚无正式介绍说明文档它可能意味着微软不鼓励用户修改这些设置这些设置项目将来可能会有变化http.sys驱动注册表设置项目位于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP下面在这里可添加各种注册键(默认配置中不包含这些注册键)诸如:

  ⑴ EnableNonUTF8:如果加入EnableNonUTF8子键并将它值设置成0http.sys只接受UTF-8编码URLUTF-8全称是Universal Character Set(UCS)Transformation Format 8这是集标准标准全文在http://www.ietf.org/rfc/rfc2279.txt它允许使用多国语言默认情况下EnableNonUTF8值是1表示IIS接受UTF-8、ANSI、双字节集(DBCS)编码URL

  ⑵ PercentUAllowed:当这个子键设置成1时(默认值)http.sys认可那些部分用%uNNNN表示URL其中NNNN是组表示实际数字当PercentUAllowed设置成0时IIS 6.0将拒绝那些部分用这种方式表示URL

  %uNNNN是种不太常用Unicode符号不要将它和常见UTF-8表示形式混淆在UTF-8表示形式中%20表示个空格例如http://www.iisanswers.com/ article.htm相当于http://www.iisanswers.com/%20article.htm两者的间转换由IE浏览器自动完成不管EnableNonUTF8和PercentUAllowed设置成了什么值IIS 6.0都会接受

  这两项设置再加上其他可以在IIS 6.0文档中找到设置项目个侧面反映了IIS 6.0在URL解析方面改进在IIS 5.0中些重大安全问题和Web服务器解析URL方式有密切关系现在微软终于解决了原先存在缺陷同时作出了些改进允许管理员更加明确地定义IIS 6.0解析URL规则在天生具有国际化特点Internet上多国语言并存这些改进的处尤其具有重要意义

  有关Unicode更多信息请参见http://www.unicode.org;有关IIS 5.0缺陷更多信息请参见 http://www.wiretrip.net/rfp/p/doc.asp/i5/d57.htm在Windows Server 2003 Resource Kit中可以找到个帮助配置http.sys工具

  ■ W3Core

  默认情况下IIS 6.0在工作进程隔离模式下运行如图 5所示在这种模式中对于每个Web应用IIS 6.0都用个独立w3wp.exe例子来运行它w3wp.exe也称为工作进程(Worker Process)或W3Core

  图 8

  两个新配置数据属性——SMPAffinitze和SMPAffinitzeCPUMask——允许配置为工作进程指派特定处理器:将SMPAffinitized属性设置成true表示应该把分配给应用特定工作进程指派给特定CPUSMPProcessorAffinityMask属性用来配置十 6进制处理器掩码该十 6进制处理器掩码指出应用池中工作进程应该绑定到哪个CPU

  写到这里文章篇幅似乎已经太长了本文主要从体系结构角度介绍IIS 6.0新特性并且尽力做到全面至少要比通常见到介绍更完善文章第 2部分将涵盖更多IIS 6.0新特性你会发现许多新特性正是自己长久以来盼望

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: