IIS 6.0 中新的请求处理结构提供一个应用程序隔离环境,使单个 Web 应用程序能够在其各自的、自我包含的工作进程中运行,因此比早期版本更可靠。下面仅列出几个使 IIS 6.0 成为更可靠的 Web 管理环境的改进功能。
可将 IIS 6.0 配置为在工作进程隔离模式(在隔离环境中运行所有进程)或者 IIS 5.0 隔离模式(可在其中运行与工作进程隔离模式不兼容的 Web 应用程序)下运行。在工作进程隔离模式中,可将任何内容(从单个 Web 应用程序到多个站点)隔离到其各自的自我包含的万维网发布服务(WWW 服务)工作进程中,以防一个应用程序或站点停止另一个应用程序或站点。如果将应用程序或站点隔离到单独的进程中,将简化许多管理任务。
在工作进程隔离模式中,工作进程处理所有用户代码,并完全与核心的 WWW 服务 Inetinfo.exe 隔离。因为这些 ISAPI 应用程序与 WWW 服务单独运行,所以,当应用程序失败时,可防止 WWW 服务主控的所有服务也失败。只有宿主 ISAPI 应用程序的工作进程受到影响。可将工作进程配置为在特定 CPU 上运行,从而允许更好地控制对系统资源的平衡。
工作进程隔离模式允许客户创建多个应用程序池,每个应用程序池都可以有一个唯一的配置。因为这些应用程序池直接从内核(而非 WWW 服务)接收它们的请求,所以性能和可靠性得到了增强。
在工作进程隔离模式下,可配置应用程序池为任何内容提供服务 - 从一个 Web 应用程序到多个应用程序或多个站点。将应用程序分配给应用程序池允许您进一步隔离应用程序,只需在配置数据库中配置应将应用程序路由到哪个池即可。在默认情况下,站点被视为一个简单的应用程序,在这里,根目录的名称空间“/”作为应用程序配置。
在工作进程隔离模式下运行时,对于应该排在 HTTP 协议堆栈 (HTTP.sys) 中每个应用程序池的请求,可选择限制请求数。这允许您通过管理应用程序池请求和系统资源更好地调整应用程序的运行环境。
Web 园是一种应用程序池,其中有多个为路由到该池的请求提供服务的工作进程。每个应用程序池都配置为与指定的工作进程关联。另外,还可以通过在工作进程和处理器之间建立关系来提高 Web 应用程序在工作进程隔离模式下的可伸缩性,这样,在多处理器服务器上,锁定一个进程就不会影响任何其他进程。
如果某个应用程序池中的工作进程失败,则 IIS 6.0 内核模式驱动程序 HTTP.sys 会将面向该池的请求放在队列中。因为 WWW 服务管理这些进程,则 WWW 服务可初始化其他进程,而不中断对用户提供的服务。请求会从队列中发送,直到队列变空或者直到 WWW 服务被停止。
在工作进程隔离模式中,WWW 服务监视工作进程的运行状况,而且,如果该进程不响应,会终止该进程并替换为另一个进程。运行状况监视有助于使进程保持运行并向用户提供更可靠的服务。
可通过以下方法控制系统资源:将工作进程隔离模式下的应用程序池配置为让它们的工作进程在空闲一定时间后请求关闭,该时间(如分钟、小时或天)可进行配置。然后当 IIS 收到该应用程序池的请求时,可请求强制启动应用程序。
可将 IIS 配置为在工作进程隔离模式下使用快速失败保护来在特定应用程序池发生多次连续失败时自动禁用应用程序池。
如果一个工作进程无法响应来自“WWW 服务管理和监视”组件的查询,则可以将它在工作进程隔离模式下配置为与应用程序池“分离”,而不是终止它,并启动一个新工作进程来代替它。因为该进程仍在运行,所以可针对它执行诊断。有关详细信息,请参阅应用程序池运行状况。
可将 IIS 配置为在工作进程隔离模式下定期重新启动应用程序池中的工作进程。当启动新进程时,它将任何请求接收到该应用程序池,以前的工作进程同时完成它在队列中的请求。回收工作进程使您无需中断对用户提供的服务就可管理有问题的应用程序(如有内存泄漏的程序)。