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

发表于:2009-04-15来源:作者:点击数: 标签:服务器webWebWEB艺术
调整 web 应用程序 iis 5.0 对于服务静态 html 网页及配上默认的设置值基本就已足够了。如果您的站点主要是静态内容,则许多 性能 问题可能会与硬件有关。iis 5.0 为 web 应用程序提供不错的性能,但若想获得最佳的性能,还需要一些额外的调整。当然,不管 服
调整 web 应用程序

  iis 5.0 对于服务静态 html 网页及配上默认的设置值基本就已足够了。如果您的站点主要是静态内容,则许多性能问题可能会与硬件有关。iis 5.0 为 web 应用程序提供不错的性能,但若想获得最佳的性能,还需要一些额外的调整。当然,不管服务器软件如何增强,与 web 应用程序设计及程序代码有关的最佳经验方法的问题依然会存在。虽然本文没有试图讨论调整 web 应用程序的细节,但本节仍提供一些使它们执行更快的指导及建议。在规划及测试您的 web 应用程序时,请先考虑下列事项,然后再到实际联机运行的服务器上执行它们。

  第一,isapi 应用程序比 active server pages (asp) 应用程序执行得更快,虽然 asp 的开发费用远比 isapi 低。这两种应用程序都比 cgi 应用程序执行得更快。

  第二,因为静态文件不会有动态文件才有的处理负载,或引起磁盘活动,所以您应该尽可能使用它们。除了使用静态文件外,您的应用程序应尽可能将处理负载推到客户端,以避免网络等待时间。如此也能节省服务器端的资源,并让更新在很段时间内完成。有个常用的范例是加一个客户端的小程序代码,来检查电子邮件地址组成是否正确。

  另一个技巧是确定在您的实际上线运行服务器上已关闭 asp 的侦错功能。如果启用侦错,则必须将 appallowdebugging metabase 属性设为 false。相关信息,请参阅〈附录 1︰性能设置〉。

  尽可能地为所有图像及 html 设置「过期」标题,让它们可以存放在客户端的缓存中。相关信息,请参阅本文中的〈调整及疑难排除的建议〉小节。

  如果 microsoft visual basic_ 对象是以 apartment 线程处理的(非 java 或大部分 c++ 对象),请从「asp 应用程序及有效期」状态中删除它们。

  只有在必要时才使用 secure sockets layer (ssl)。使用 https 通讯协议比使用标准 http 贵很多。请确定传送中的信息 (可能是敏感资料如信用卡号) 的价值是否值得您付出增加的费用。安全性调整问题的相关信息,请参阅本文中的〈安全性〉小节。

  进程隔离也会影响 web 应用程序的性能。iis 5.0 web 应用程序默认是在进程外的缓冲池 (中度保护) 中执行。接受进程隔离对性能的影响总比冒着服务器停机或资料遗失的风险来的安全,例如因应用程序当机而破坏它与 iis 5.0 共享的 ientinfo 进程时就会导致这些风险。有关这个主题的深入讨论,请参阅本文中的〈进程隔离〉小节。

  若要增进生产环境中的数据库驱动性能,请使用 microsoft sql server。由于 iis 及 sql server 在足够的内存下执行的情况最好,因此请尝试将资料库存放在不同于 web 服务的服务器上。在这种情况下,经由网络跨计算机通讯通常比单一计算机上的通讯还快。当 sql server 及 iis 存放在同一台服务器上时,就会经常因为内存不足或循环不够而导致性能降低。此外,请务必建立及维护适当的索引。如此才能最小化数据库查询的输入和输出。最后一点,请尽量多利用被存储的过程(stored procedured)。它们比设计来执行相同工作的 asp 脚本文件所需的执行时间更少,而且更容易撰写。

  一般来说,如果您有个超过 100 行 (使用 #include 指令来计算添加文件中的程序代码行数) 的 asp 脚本文件,请考虑建立一个 com+ 组件来提供相同的功能。如果能撰写得很有效率,并且经过正确地的测试,则 com++ 组件可以为同一动态页提供 20 到 30 倍处理一个脚本文件的速度。使用 #includes 测量 asp 脚本文件最简单的方式是将扩展名从 .asp 改为 .stm,并使用您的浏览器开启 .stm 檔。您的浏览器会显示此 .asp 文件,以及来自该已包含文件(included file)中的程序代码。

  若要最佳化动态网络应用程序的性能,很重要的一项工作是让您的应用程序正式在站点上启用前,先测试它们。执行这项工作有个很好用的工具--web application stress (was) 工具,您可以从 microsoft web application stress tool 站点 下载它。在这个站点上还包括专为此工具提供的教学指南及知识库。was 也内含在 windows 2000 resource kit 附随 cd 上。本 cd 上亦有。
测量网站服务器及应用程序所需工具的相关信息,请参阅本文中的〈用来监视及测试服务器性能的工具〉小节。如需网络应用程序性能及测试该性能所需工具的链接及参照清单,请参阅本文中的〈资源〉小节。
监视及测试服务器性能的工具

  为了支持您的性能调整及测试需求,microsoft 提供几个工具︰有些内含在 windows 2000 及 iis 5.0 中、有些位于 windows 2000 resource kit cd中,剩下的内容则可从 microsoft 网站下载。「系统监视器」(先前称为 perfmon) 内建在 windows 2000 中,它对于监视服务器的各种性能而言是必要的。「进程及线程状态」(pstat.exe) 会显示所有执行中的进程及线程的状态。「进程树状目录」(ptree.exe) 可让您查询进程的继承树状目录,及删除本机或远程计算机上的进程。这些工具都提供在 windows 2000 server resource kit 附随 cd 上。提供在 windows 2000 resouce kit 附随 cd 上的「http 监视工具」会监视服务器上的 http 活动,而且会在活动容量发生改变时通知您。「网络监视器」是个您可以用来维持固定网络传输量的 windows 2000 管理工具。它不包含在默认安装中,不过使用 [控制面板] 的 [添加/删除程序] 功能可以安装它。netstat 是个指令行工具,会侦测关于服务器目前网络连接的信息。

  这些工具的中心是内建在 iis 5.0 及 windows 2000 操作系统中的「性能计数器」。开发人员也可以在他们编写的 isapi dlls 或 com 组件中添加自定义的的「性能计数器」。这些计数器可以由以上提到的一些工具直接读取,包括「系统监视器」及「web 应用程序压力工具」和 wcat。其中有些计数器在本文前面已作过说明,但了解哪些会关系到您的监视及测试需求是很重要的。

  「系统监视器」是一个在web服务器上建立性能基准,并监视您对软硬件所作的任何改变,对性能将产生哪些影响的最重要工具。「系统监视器」提供一个用户接口,让您在监视或记录时能看见性能计数器的指数。它也能让您以图形方式记录计数器活动,并设置将出现在 [事件查看器] 中的警告。「系统监视器」提供系统中每一计数器的记录。

  「web 应用程序压力」工具是专门为了仿真多个浏览器同时向一个网站送出网页请求而设计的。您可以使用这个工具来收集关于 web 应用程序性能及稳定性的信息,以及服务器执行状况的信息。这个工具可以仿真利用少数的客户端机器向 web 服务器送出大量的请求时的状态。其目的是为了建立一个与生产环境尽可能相似的环境。如此才能让您在将 web 服务器及应用程序部署到联机运行的服务器上之前,先找出并消除其中存在的问题。

  以上任一工具的相关信息,请参阅内含在 windows 2000 resource kit 中的联机iis 5.0 文件。指向其它信息来源的链接则内含在本文的〈资源〉小节中。

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