特爱蚂蚁
管理员
帖子
1282
精华
3
无忧币 3110
积分 1316
阅读权限 255
来自 (保密)
|
发表于:2008-7-7 16:38
标题:IIS使用指南之一 :IIS 6 新特性
<上一帖 |
下一帖>
可能很多朋友使用Windows Server 2003是因为IIS 6 的强大性能吧,和Windows 2000中包含的IIS 5 相比,IIS 6更为安全和稳定,最重要的是具有更高的性能,那么,为什么IIS 6会具有更高的性能呢? bbs.51cto.com h4]"r-u
Msy
i3_ R {2T?(L!QY51CTO技术论坛IIS 5 和 IIS 6 的架构比较
6g"ja&j4`,BB51CTO技术论坛这点需要从IIS 5的架构说起。IIS 5的架构如下图所示, bbs.51cto.comm)k(|.AEJ]W_
,o1co;rSfRIIS 5 的所有组件都工作在用户模式中,核心组件INETINFO侦听WinSock端口(例如常见的TCP 80端口)。当HTTP访问请求到达时,工作在内核模式的TCP/IP驱动将其直接路由到INETINFO进程,INETINFO进程自己本身对此请求进行处理或者将其交付扩展组件(如ISAPI扩展)进行处理。IIS 5 使用COM+提供的DLLHOST基础结构方式进行工作,这种方式具有以下缺陷: bbs.51cto.com&w!d4PDZ8uj
bbs.51cto.com:G&GY7c @
jH#]1|"Z&|
在INETINFO中执行第三方代码;这样的后果是如果执行的代码有问题,那么会导致整个Web服务器停止工作;
z"vQp?mifm(w/O M(~bbs.51cto.com%s cI6GxZ_ A%F&C
如果执行的代码工作在OOB方式,那么可能需要多次用户模式到用户模式的转换,这降低了执行效率; 51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|+IYNFzn
51CTO技术论坛F`5F#Vr
Web服务器上的所有Web站点工作在一个应用程序池内,无法实现隔离;
k.E
V\a)U(V 6`*W Cy/na
针对IIS 5中的种种问题,微软将IIS 5的代码推倒重来,重新设计了IIS 6并在Windows Server 2003中提供。IIS 6的架构如下图所示, 51CTO技术论坛1\%n]p6Q
_D
-aL!d)_v可以从上图中看到,INETINFO进程虽然也存在,但是已经不再处理HTTP请求,而是处理FTP、SMTP和NNTP等非HTTP请求了。在IIS 6中,Web服务组件由以下三个组件构成:
'T0T@%K8M*P2Uk`51CTO技术论坛51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|3SnS0q l"{4Z
i
运行在内核模式的HTTP.sys(HTTP协议栈); 51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|6F.|:s1O9z[
bbs.51cto.com
O t
Sgn3]
运行在用户模式的WAS(Web Admin Service,包含于W3SVC服务中);
y5yWYq.gI|0_bbs.51cto.com
}/t;y%GURwv]4KLbbs.51cto.com运行在用户模式的工作进程(WP,Worker Process)
Cu
v!aTjbbs.51cto.com
r0fT,v~'Ibbs.51cto.comHTTP.sys(HTTP协议栈) w6STH~uR.]*c
HTTP.sys是工作在内核模式的HTTP请求侦听器,它的架构如下图所示:
}js*^&W:cP0O7VY51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水| *lQR
r-R,O'Y"u A(Kz
HTTP.sys不会执行外部代码,它具有以下作用: 51CTO技术论坛
F?-j%i(V,Ii1U
-e!u+d)QU1yOVbbs.51cto.com侦听和分析HTTP请求,支持IPv4和IPv6;
Ldofr51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|
yUX_!u2ww51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|根据URL命名空间将接收到的HTTP请求路由到不同的工作进程;如果请求的URL并不位于本地的URL命名空间范围中,则返回400错误;
]Q_)}{"fd51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|3r
H%vT:M
B
将HTTP请求进行队列缓存; bbs.51cto.com
["f}T7R1u
E`4A8[)k在内核模式中缓存静态的和无需身份验证的内容响应;这极大的提高了Web服务的响应速度,增强了Web服务器的性能。 bbs.51cto.com4^i6^,H:R5h
.i6`&U
U3xI~51CTO技术论坛支持PAE内存寻址方式,在x86上支持的内存容量为64GB; 51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|0O~!g!p8y.d
o
51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水| ` es!K-u
bbs.51cto.com0N.xK ]@z4J
WAS(W3SVC)
Xn}1S'H\(|%DWAS包含于W3SVC服务中,它负责管理IIS 6中的配置、应用程序池和工作进程,它工作在用户模式,但不会执行外部代码。
#Ci CD;Ubn(`51CTO技术论坛它主要具有以下作用:
&U+R i(F7jg;c*B2X51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|
lk/BS/EE"z1A#ho51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|配置HTTP.sys;
1V5iq.V0f3w
_!ibbs.51cto.combbs.51cto.com0m
Sw%v?cH
管理应用程序池;
xU5clL}bbs.51cto.com0?(KDc,u7p@S,@
创建工作进程; 51CTO技术论坛S"\#Wa8}:b
sC
r7S'BQ0i eOGrJ51CTO技术论坛工作进程回收;
Xq7j)E#Q"G0[C2N^;I51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|
}e JC-B9FX工作进程状态监视;
9B"`;ak+fc8Hy-F
SQ2E.Ao F| T工作进程快速失败保护; 51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|
]j[ Mz
DL5J4r Djr
支持孤立工作进程以进行调试等;
HU]*io7V3G e
-{bw9Lm#M工作进程(WP,Worker Process) 51CTO技术论坛c U\.tF3BBL
在介绍工作进程之前,需要先介绍应用程序池。应用程序池定义了可以共享工作进程的Web应用程序(Web站点)的集合,你可以认为它是一组URL命名空间,属于此URL命名空间范围中的Web站点将共享此应用程序池中的工作进程,而HTTP.sys是根据应用程序池所定义的URL命名空间将接收到的HTTP请求路由到此应用程序池对应的工作进程。 51CTO技术论坛Y"a N2jA0|!d~
和IIS 5 中只能使用一个应用程序池不同,在IIS 6 中你可以创建多个应用程序池,并将不同的Web站点(Web应用程序)分配到不同的应用程序池中,一个应用程序池可以具有一个或多个Web应用程序。不同应用程序池之间是完全隔离的,某个应用程序池出现故障时不会影响其他应用程序池;这样当属于某个应用程序池的Web站点因为代码编写问题而导致停止服务时,不会影响到使用其他应用程序池的Web站点,这最大的实现了Web服务器的高可用性。 bbs.51cto.com(T*rD|cI&X
在IIS 6中提供了Web园功能,支持使用超过1个的工作进程,并且支持在SMP系统中为工作进程分配CPU亲缘关系,让其只在某些CPU上运行。
-x&K"v"@8_0kbbs.51cto.com工作进程则是真正用于处理客户发送的HTTP请求的组件,你可以认为它是一个全功能的Web服务器,就像一个微型的IIS 5 服务器一样。当HTTP.sys决定将接收到的HTTP请求路由到某个应用程序池时,它是将HTTP请求路由到此应用程序池对应的工作进程进行处理;工作进程处理HTTP请求,如果需要则加载其他组件(ISAPI扩展或过滤器等等)进行处理,并将处理结果返回给HTTP.sys。 bbs.51cto.com"Vil~ @r&Z
AD;W0O
4prB-C3C?D`51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|当客户发起HTTP连接请求时,IIS 6完整的处理过程如下: 51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|!r9Egytg-e"Z8V
51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|L
_;Lw2A p&m$Rc)}
在W3SVC服务启动时,WAS即启动,并且根据metabase.xml中的设置来配置HTTP.sys; bbs.51cto.comt[1{$Cp*z
51CTO|计算机|网络|信息|技术|安全|路由器|网管|Windows|Vista|数据库|网站|开发|下载|灌水|"Y,L%B.llN:s
当HTTP.sys接收到HTTP请求时,分析其URL命名空间,如果在自己的响应缓存中具有匹配值则直接从缓存中获取响应并返回给客户,如果没有匹配值则根据WAS提供的URL命名空间 范围来决定由哪个应用程序池处理此HTTP请求;
t{}0NikJb51CTO技术论坛l ktF CVBBV
如果此应用程序池当前没有工作进程,那么HTTP.sys通知WAS为其创建一个新的工作进程;
y{"JCYIg
4X{3H
o{HTTP.sys将接收到的HTTP请求路由到对应的工作进程中,工作进程处理此HTTP请求然后将结果返回给HTTP.sys,并且根据缓存活动算法来告知HTTP.sys是否缓存此结果; fJjoo(^
| |