iis6功能详解之应用程序池

用程序池的“属性”对话框有四页——回收,性能,运行状况,标识,如图六所示。在这些选项页中,最引人注目的恐怕就是“回收”页,使用该选项页可以管理工作进程的回收。在工作进程隔离模式中,
IIS可以配置成定期重新启动应用程序池中的工作进程,从而更好地管理那些有错误的工作进程。这确保了池中的应用程序运行正常,并且可以恢复丢失的系统资源。为了回收工作进程,失败工作进程接收请求的能力将被限制,直到它处理完存储在请求队列中的所有剩余请求。为了排出当前请求,可以给予进程配置限制。同一命名空间组的替换工作进程在旧的工作进程停止前启动,从而防止服务中断。旧的进程完成其未决的请求,然后正常关闭,或者如果在达到了配置的时间限制、请求数、设置的时间计划,或当达到指定的内存用量限制后仍没有关闭,则明确地终止进程。默认情况下,应用程序池每隔1740分钟(29小时)回收一次。

  W3SVC根据“运行状况”页的选项来判断应用程序池运行是否正常,包括:每隔指定的时间Ping工作进程,时间按秒计,默认值30秒;启动时间限制(工作进程必须在指定的时间内开始);关闭时间限制(工作进程必须在指定的时间内关闭);是否启动快速失败保护(如果在指定的时间段内一定数目的工作进程发生失败,则禁用应用程序池)。另外,ISAPI应用程序(包括ASP.NET和asp.dll)可以声明自己不再适合提供服务,要求回收。

  默认情况下,当IIS 6.0回收一个池时,它会使用一种称为overlapped recycle的回收技术。在这种回收模式下,失败的工作进程仍会保持运行状态,同时创建一个新的工作进程。IIS 6.0把新传入的请求传递给新的工作进程,但不拆除老的工作进程,直至老的工作进程处理完它队列中的请求,或者遇到超时错误。在此期间,TCP/IP连接不会丢失,因为有http.sys保持着连接的有效性。当失败的工作进程超时出错时,下一个请求传递给工作进程的请求是新的请求,因此原来保存在进程中的会话信息就会丢失。所有这类回收操作都自动进行,无需管理员干预,而且在大多数情况下,不会造成明显的服务中断现象。如有必要,可以将配置数据属性LogEventOnRecycle的值设置为1,指示W3SVC执行回收操作时生成一条事件日志记录。

  对于那些不能以多个实例运行的应用程序,overlapped recycle回收技术可能引起问题。如果遇到这类问题,可以将配置数据属性DissallowOverlappingRotation的值设置成True(1),关闭某个应用程序池回收操作时的进程“重叠”现象。另外,对于失败的工作进程,有时我们可能不想将它拆除,仍旧保留该进程,以便检测和寻找发生问题的根源,这时可以将配置数据属性OrphanActionExe设置成执行文件的名字,使得工作进程成为“孤儿”时执行文件仍保持运行状态。

  另一个与应用程序池有关的特性是,IIS 6.0允许将应用程序池配置成一个Web园(Web Garden)。要理解Web园的概念,可以设想这样一种情形:假设有一个IIS 5.0服务器和三个Web网站,每一个Web网站运行着相同的应用程序,如果IIS 5.0能够自动按照圆形循环的模式将请求依次发送给这些功能上等价、实际上分离的Web网站,将负载分离到三个不同的进程,就可以构成一个小型的Web农场(Web Farm)——这就是Web园。

  在IIS 6.0的Web园中,我们不必创建额外的Web网站,只要指定用于某个应用程序池的工作进程的数量就可以了。具体的配置步骤是:打开应用程序池的“属性”对话框,转到“性能”页,在“Web园”下面的“最大工作进程数”输入框中输入进程数量,如图八。当服务器的负载较小,不需要额外的工作进程时,IIS 6.0在一定的时间后(默认20分钟,可配置)自动缩减实际的工作进程数量;如果负载变大,需要额外的工作进程,IIS 6.0再次增加工作进程数量。这一切操作都自动进行,不需要管理员干预。

 

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

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

前文介绍了IIS 6.0的安装和Web服务器的新型体系结构。IIS 6.0新特性的数量多得令人惊奇,其中一些特性是如此引人注目,以至于人们的大部分注意力都被它们吸引。在这第二篇介 绍IIS 6.0的文章中,我们不仅将了解这些已成为“明星”的特性,还将关注一下IIS 6.0各种较少有人注意却同样重要的改进之处。

  一、安全

  微软一次又一次地做着同样一件事情——某个软件产品出了问题,饱受人们诟病,于是赶紧发布新的版本将问题解决。例如,发布Windows NT 4.0之后,因稳定性问题而饱受批评;于是微软发布了Windows 2000,新操作系统的稳定性颇受好评,但Win 2K服务器默认安装的IIS 5.0却成了巨大的安全隐患,需要下大力气加以整治才能解决问题。IIS 6.0默认不安装,如果按照缺省方式安装,Web服务器只能提供静态内容服务。因此,从这个角度看,即使以后IIS 6.0应用引擎和组件突然出现了问题,IIS 6.0还是极大地降低了安全风险。另外,Windows Server 2003还有一个新的组策略“禁止安装IIS”,有了该组策略,我们就可以禁止Windows 2003在活动目录(AD)森林中禁止不准备作Web服务器用的机器上安装IIS 6.0,防止网络上出现根本无用的、不安全的IIS 6.0服务器。不过,目前这个组策略只对Windows 2003服务器有效,不能防止Windows XP Pro和Win 2K的机器安装IIS 5.0。

  当然,由于刚刚安装好的IIS 6.0不支持动态内容,所以出现了第二个人们经常会问的问题:“为什么我的服务器不能运行ASP?”(前文提到,第一个人们经常会问的问题是:“IIS 6.0可以在Win 2K服务器上运行吗”?答案是“不”)。要想在IIS 6.0上运行程序,必须使用IIS 6.0的一种新特性,即Web服务扩展,或Web Service Extension(这个名字似乎意味着它与XML Web服务有某种关系,实际情况并非如此。)


  如果要为某个程序启用Web服务扩展,首先打开IIS管理器(在“控制面板”→“管理工具”中。以前叫做Internet服务管理器或ISM),如图一,点击“添加一个新的Web服务扩展”,启动向导创建一个新的规则。为规则指定一个名字,然后找到想要启用的执行文件。另外,\system32\inetsrv下有一个iisext.vbs脚本,它也能够配置并管理运行带有IIS 6.0的Windows Server 2003的Web服务扩展、应用程序和单独的文件。管理员可以使用此脚本来启用和列出应用程序;添加和删除应用程序依赖性;启用、禁用和列出 Web 服务扩展;添加、删除、启用、禁用和列出单独文件。

 

  在图一中,注意“所有未知ISAPI扩展”和“所有未知CGI扩展”这两种Web服务扩展。默认情况下,这两种扩展是禁用的,意味着除非明确地允许一个应用在IIS 6.0上运行,否则它就不能运行。如果一个用户请求了某个没有启用的文件,IIS 6.0将向用户返回404错误——文件或目录没有找到,同时在W3SVC日志中记录“
404.2文件或目录无法找到:锁定策略禁止该请求”。在IIS 6.0中,404.2和其他子状态代码是W3SVC日志文件的一项可选功能,用来帮助排解故障、疑难(IIS 5.0和IIS 4.0中也有子状态代码,不过不会在日志文件中记录,但可以将它们转到定制的错误页面,便于根据子状态代码执行特殊的处理)。IIS 6.0的子状态代码很有用,它们提供了描述问题的详细信息,例如:403.20,禁止访问:Passport登录失败;403.18,禁止访问:无法在当前应用程序池中执行请求的URL;404.3,文件或目录无法找到:MIME映射策略禁止该请求;500.19,服务器错误:该文件的数据在配置数据库中配置不正确。所有这些错误和其他错误都映射到定制的错误页面,错误页面不会把子状态代码发送给用户,攻击者无法获知具体的错误信息。

  另一个安全方面的改进之处是IIS 6.0允许指派一个加密服务提供者(Cryptographic Service Provider,CSP),能够将基于硬件的安全套接字层(SSL)加速器集成到IIS 6.0,从而把加密任务从服务器的通用CPU转移到了专门为加密操作而优化的专用设备,有利于提高性能和可靠性。

你可能感兴趣的:(应用程序)