深入剖析IIS 6.0(5)

iis

■ W3SVC
  W3SVC也许是IIS 6.0体系中最不令人注意的组件,不过这并不说明它不重要。W3SVC的任务是根据配置数据的设置创建和监视工作线程,由工作线程运行Web网站应用。在IIS 5.0中,与IIS 6.0 W3SVC组件最接近的是IIS管理服务,IIS管理服务是Inetinfo的一部分;因此,如果Inetinfo出现问题,IIS管理服务也会出现问题,而且此时的IIS管理服务不能再重新启动Inetinfo或其他故障的应用程序。在IIS 6.0中,W3SVC作为一个独立的进程运行,Web应用的故障不可能波及W3SVC,因为W3SVC之内根本没有第三方的代码运行。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.0的https.sys内核模式驱动程序极大地减少了用户模式和内核模式之间的切换次数。http.sys监听着HTTP请求,决定由哪一个用户模式的进程来处理该请求,或者是否由驱动程序本身返回用户请求的内容。

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

  如果要从内核模式的缓冲区返回静态的应答,一个高速的、内核模式的、不允许运行应用程序代码的HTTP处理器是十分理想的,它减少了切换到用户模式的昂贵开销,能够从内核模式的缓冲区快速返回应答。IIS 6.0的http.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网站日志信息的任务(从而提高了记录日志的性能)。

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

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

时间: 2025-01-21 12:23:17

深入剖析IIS 6.0(5)的相关文章

深入剖析IIS 6.0(1)

iis 关于IIS 6.0的故事一言难尽,如果你已经在IIS技术上有所投资,IIS 6.0无疑是一个动人的.非听不可的话题.鉴于IIS 6.0和以前版本的差别实在太大了,只用一篇文章很难做到面面俱到,所以本文首先探讨IIS 6.0的安装.体系结构以及由于体系结构方面的差异带来的全新服务功能,下一篇文章接着介绍IIS 6.0的新特性--其中有些你可能还没有听说过,另外还有默认配置方面的一些重要变化,这些变化可能会影响到你的迁移计划. 一.安装IIS 6.0 首先从最基本的说起吧.IIS 6.0包含

深入剖析IIS 6.0(14)

iis 对于IIS服务器来说,唯一标识一个网站的不是网站的名称,而是网站的ID数值.当我们在IIS 5.0和IIS 4.0中创建一个新的网站,Web服务器将下一个可用的数字顺序号指定给网站(即,Web服务器给默认站点指定的数字是1,下一个网站是2,接下来是2.3.4,等等),这个数字就是网站的唯一ID.如果要访问一个网站的日志文件,首先必须知道该网站的ID,因为日志文件保存在\W3SVC\<网站的ID编号>目录.如果Web服务器上运行着一个以上的网站,仅仅依靠日志文件的路径名称根本无法判断哪一

深入剖析IIS 6.0(4)

iis 如果将IIS 5.0或IIS 4.0服务器升级到Windows 2003,IIS 6.0不会被设置成自动启动.也就是说,如果采用升级的方式安装,IIS 6.0默认是禁用的,除非遇到下列情况之一: ⑴ 以前的IIS服务器上已经安装了IIS Lockdown工具. ⑵ 存在注册子键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\RetainW3SVCStatus,且它包含一个任意的注册键.例如,你可以创建一个名为Enabl

深入剖析IIS 6.0(13)

iis 通配符应用程序可以做到开发者要做的任何事情,诸如URL定制.验证身份.记录特殊的日志信息.检测攻击企图.创建内容,等等.通配符应用程序结束处理后,它把请求转交给适当的处理引擎(例如处理ASP页面的asp.dll),由处理引擎进一步处理请求.另外,通配符应用程序还可以通过调用为ISAPI应用程序新增的ExecuteURL功能,将请求传递到同一个应用程序池中的任意页面. 新增的ISAPI通配符应用程序为创造性的应用程序设计大开方便之门.例如,IIS 6.0的URL授权功能就是作为一个ISAP

深入剖析IIS 6.0(3)

iis 安装IIS 6.0的最后一种方式是无人值守安装.和以前一样,这仍旧是唯一一种能够将工具和默认Web网站安装到其他驱动器(而不是系统驱动器)的安装方式.Windows 2003无人值守安装方式大体上仍和Win 2K一样,都是用Sysocmgr和一个应答文件实施安装.当然,新的特性需要新的参数.选项,有关这方面的详细说明,可以在Windows 2003 Release Candidate 2 (RC2)找到,地址是:http://www.microsoft.com/technet/treev

深入剖析IIS 6.0(7)

iis 因此,工作进程隔离模式不存在进程内(In-Process)应用程序存在的问题,有效地提高了可靠性和安全性.可靠性的提高是因为一个Web应用的故障不会影响到其他Web应用,也不会影响http.sys,每一个Web应用由W3SVC单独地监视其健康状况.安全性的提高是由于应用程序不再象IIS 5.0和IIS 4.0的进程内应用那样用System帐户运行,默认情况下,w3wp.exe的所有实例都在一个权限有限的"网络服务"帐户下运行,如图六所示,必要时,还可以将工作进程配置成用其他用户

如何提高IIS 5.0网站伺服器的执行效率呢?

iis|执行 提高IIS 5.0执行效率 如何提高Windows 2000 Server中IIS 5.0网站伺服器的执行效率呢? 提高IIS执行效率的方法如下: 1. 启用HTTP的持续作用可以改善15~20%的执行效率. 2. 不启用记录可以改善5~8%的执行效率. 3. 使用 [独立] 的处理程序会损失20%的执行效率. 4. 增加快取记忆体的保存档案数量,可提高Active Server Pages之效能. 5. 勿使用CGI程式. 6. 增加IIS 5.0电脑CPU数量. 7. 勿启用A

提高IIS 5.0网站服务器的执行效率的八种方法

iis|服务器|执行 以下是提高IIS 5.0网站服务器的执行效率的八种方法: 1. 启用HTTP的持续作用可以改善15~20%的执行效率. 2. 不启用记录可以改善5~8%的执行效率. 3. 使用 [独立] 的处理程序会损失20%的执行效率. 4. 增加快取记忆体的保存文档数量,可提高Active Server Pages之效能. 5. 勿使用CGI程式. 6. 增加IIS 5.0电脑CPU数量. 7. 勿启用ASP侦错功能. 8. 静态网页采用HTTP 压缩,大约可以减少20%的传输量. 简

如何在Win 2003中识别IIS 6.0组件

目标 使用本模块可以实现: • 识别 Internet 信息服务 (IIS) 组件 • 了解何时启用 IIS 的各个组件 适用范围 本模块适用于下列产品和技术: • Microsoft Windows Server 2003 操作系统 • Internet 信息服务 6.0 如何使用本模块 本模块与 Windows Server 2003 安全指南配合使用,是该指南的补充材料.完成默认安装后,请使用本模块了解 IIS 的服务和功能.还可以使用本模块了解每个相关服务的角色以及何时启用这些角色. 概