终极优化(4):使用 IIS 5.0 调整 Web服务器的艺术与科学

发表于:2009-04-15来源:作者:点击数: 标签:服务器webWebWEB艺术
进程隔离 iis 4.0 介绍了在进程外执行 web 应用程序的概念。这个功能为 web 服务器 建立了更高的稳定性,但也产生相当大的 性能 成本。在 iis 5.0 中,进程外(out-of-process)应用程序的性能已获得改善,尤其是对 aps 更明显。不过,相较于 iis 5.0 进程内(in
进程隔离

  iis 4.0 介绍了在进程外执行 web 应用程序的概念。这个功能为 web 服务器建立了更高的稳定性,但也产生相当大的性能成本。在 iis 5.0 中,进程外(out-of-process)应用程序的性能已获得改善,尤其是对 aps 更明显。不过,相较于 iis 5.0 进程内(in-process)的应用程序,还是有些性能降级的现象。除了更高的性能外,在进程外(out-of-process)执行应用程序的概念也有所延伸。您现在可以在一个缓冲池的(pooled)进程外环境中执行 web 应用程序。

  在 web 服务进程中执行的应用程序 (inetinfo.exe) 能产生更高的性能,但是因不良应用程序而导致 web 服务无法使用的风险也更高。建议的设置是让 inetinfo.exe 在自己的进程中执行、让负担重要任务的应用程序在自己的进程中执行 (高度保护),并让剩余的应用程序在一个共享的缓冲池进程 (中度保护) 中执行。若要获得最佳性能和可靠性,请以中度保护执行 asp 应用程序,并将所有 com+ 组件设置为链接库应用程序,而非服务器应用程序。

  如果决定在单独的进程中执行您的应用程序,或在单一的进程中执行其它应用程序,则必须从 ][主目录] 或 [虚拟目录] 属性页上的 [应用程序保护]下拉列表中选取 [高 (隔离的)] 或 [中 (缓冲池的)]。您应先建立一个应用程序目录并将它指定为「主目录」或「虚拟目录」(如果尚未这样做的话)。所有新应用程序默认会以中度保护执行。

  这些注册表设置及 metabase 内容的相关信息,请参阅〈附录 1︰性能设置〉。本节中所提功能的相关信息,请参阅 iis 5.0 及 windows 2000 联机文档。

  调整及疑难排除的建议

  如果您判定需要处理特定硬件驱动的性能问题,请考虑使用下列建议。

  ·  升级到较大的「l2 缓存」。如果判定需要添加或升级处理器,请选择有大型 (l2) 缓存的处理器。例如 iis 等服务器应用程序可以从大型处理器缓存中获益,因为它们的指示路径牵涉到许多不同的组件,而且它们必须存取大量资料。若想提升执行 iis 5.0 的服务器的性能,建议您使用大量处理器缓存(如果是处理器外部的缓存,建议使用 2 mb 或以上,如果在 cpu 芯片上,则请使用可用的最大值)。

  ·  升级到更快的 cpu。网络应用程序特别能从更快的处理器获益。

  ·  设置「活动的连接超时时间」。若要尽可能地抵抗网络等待时间,请设置活动的连接超时时间。如果您执行的是高传输量的网站,这将是非常重要的。开启的连接会使性能降级。connectiontimeout metabase 内容默认会设为 15 分钟。此内容的相关信息,请参阅〈附录 1︰性能设置〉。

  ·  使用「过期标题」。在所有静态及动态内容上设置「过期」标题,让这两种内容可以存放在客户端的缓存中。如此可加快响应时间、减少服务器上的负载及网络上的传输量。例如,您可以建立一个标题,指定如果用户已经造访过您的站点时,不要下载您公司的标帜 .jpg 檔。若要为静态内容设置「过期」标题,请使用 [http 标题] 内容页。若要为动态内容设置「过期」标题,请使用 response.addheader 方法。此方法的相关信息,请参阅 iis 5.0 联机文档。

  ·  确定已启用「asp buffering」。「asp 缓冲处理」默认会在全新安装 windows 2000 之后启用。如果是从 windows nt 4.0 及 iis 4.0 升级,您可能需要手动启用它。「asp 缓冲处理」可让所有来自应用程序的输出在通过网络传给客户端浏览器之前,先收集在缓冲区中。 如此可以降低网络传输量及响应时间。虽然缓冲处理可以降低响应时间,但可能会让用户察觉网页的速度变慢,因为除非网页已完成执行,否则用户看不见任何信息。审慎地使用 response.flush 可以改善交互的感觉。response.flush 方法的相关信息,请参阅 iis 5.0 联机文档。相关信息,请参阅〈附录 1︰性能设置〉中的 aspbufferingon metabase 项目。

  ·  延长连接队列及使用 http keep-alives。如果您判定您服务器的带宽不足以满足需要,并且正计划增加请求负载,则可以通过执行两个动作让网络带宽的使用更理想︰延长连接队列,及确定http keep-alives 已启用。

  每一个 iis 5.0 服务都有一个连接队列,而且皆设为 15 个项目。如果这个数字在负载量下不符合您的需求,则通过将 listenbacklog 参数添加到注册表中,并将此值设置为需要服务器维持的最大连接请求数目,即可增加它。相关信息,请参阅〈附录 1︰性能设置〉。

  http keep-alives 会保持客户端与服务器之间的连接,即使初始请求已完成也是如此。这个功能可以缩短等待时间、减少 cpu 负荷,及最佳化带宽。http keep-alives 是默认启用的。如果它们已停用,但您又想启用它们,请在 [internet 服务管理员] 中选取一个站点,开启该站点的 [属性] 页,并按一下 [性能] 选项卡后,再选取 [http keep-alives] 复选框。

  ·  缩小文件大小。您可以通过缩小服务中的文件大小来增进web服务器的性能。图像文件应以适当的压缩格式存放。尽可能限制图像及其它大型文件的数目。通过缩减 htmp 及 asp 程序代码也可以缩小文件大小。从 asp 页中删除不必要的程序代码区块,并确定您的 html 文件编写得很有效率。

  ·  将记录文件存放在个别的磁盘上,并删除不需要的信息。如果您的服务器控制了多个站点,则每一个站点会建有个别的日志文件;这些日志文件在向磁盘写入时会在您的服务器上造成瓶颈。您应该将日志存放在不同于 web 服务器的磁盘分区或磁盘上。另一个减少磁盘瓶颈的方法是避免记录不重要的信息。例如,您可以将所有图像文件放在一个虚拟目录 (例如 /images) 中,并停用该目录的日志。若要这样做,请开启该目录的内容页,清除 [日志查阅次数] 复选框,并按一下 [确定]。您也可以使用脚本文件或 isapi 过滤器来执行这项调整作业。如果您的站点是特别忙碌的大型站点,那么这项作业可以为您省下每天好几千兆的磁盘空间,以及大量的日志后处理时间。

  ·  使用 raid 及等量分配。若要增加磁盘存取,请使用 raid 及等量磁盘组。您也许要考虑使用一个有较大 ram 缓存的磁盘驱动器控制器。如果您的站点倚赖频繁的数据库存取,则请将数据库移到另一台计算机上。

  ·  需要时才使用「cpu 限制」。iis 5.0 介绍两种处理不良应用程序的新功能︰一个是进程记录,它会记录网站使用的 cpu 及其它资源;另一个是进程限制,它会限制网站可以使用的资源数量。

  进程记录及进程限制适用于 cgi (common gateway interface) 应用程序及在进程外(out-of-process)执行的应用程序。您无法为进程内(in-process)的应用程序或在新 iis 5.0 进程外缓冲池 (中度保护) 中执行的应用程序启动记录。

原文转自:http://www.ltesting.net