本文为您说明在 Windows 2000 Server 上执行 Internet Information Service 5.0 时,如何调整Web服务器。同时进一步讨论系统性能监视及测试的重要性,并且说明软件、硬件,以及工具软件的相关注意事项。其中『Windows 2000 及 IIS 5.0 中的功能及设置』一节特别说明IIS 和 Windows 2000 中新的功能与设置。附录中另外还提供许多实用的技巧、关于Metabase 的注册表与设置,以及供您参考的各种资源。虽然这份文件主要是针对 IIS 5.0,不过其中许多题材对 IIS 4.0 的管理员也很有参考价值。
此白皮书中所含之信息代表此文件发表日当天,Microsoft 公司对其中所讨论议题的当前观点。因为 Microsoft 必须响应市场的变化,因此它不应被解读为 Microsoft 的承诺,而且在发表日之后,Microsoft 不保证其中任何信息的正确性。
本白皮书仅供信息参考。在此文件中,Microsoft 不作任何明示或暗示的保证。
Microsoft、Windows 及 Windows NT 是 Microsoft Corporation 在美国及 (或) 其它国家中的注册商标或的商标。
文件中所提之其它产品及公司名称,则可能为该公司所有之商标。
Microsoft Corporation o One Microsoft Way o Redmond, WA 98052-6399 o USA
目录
1、简介
2、将性能调整当作一种艺术
3、为什么要调整 WEB 服务器?
4、要调整的内容
监视硬件
内存
处理器容量 (Processor Capacity)
网络容量、等待时间及带宽
磁盘最佳化
安全性
监视网络应用程序
调整 WEB 应用程序
监视及测试服务器性能的工具
WINDOWS 2000 及 IIS 5.0 中的功能及设置
调整及疑难排除的建议
5、测试、试探及正式启用
附录 1:性能设置
METABASE 设置
注册表设置
附录 2:WINDOWS 2000 WEB SERVER 性能最佳化的技巧
附录 3:ASP 缓存处理
附录 4:资源
简介
Microsoft Windows 2000 Server 的 Internet Information Services (IIS) 5.0 可让您的 Web 服务器提供性能增强及更高的可用性。通过操作系统及 IIS 之间更紧密的集成,您现在可以调整服务器,让它比之前的版本更快且更有效率地执行。
这份文件是针对负责监视及调整在 Windows 2000 及 IIS 上执行的网站的 Web服务器管理员而设计的。虽然其中涵盖一些 Web 应用程序测试及调整的讨论,但是这份文件的主要阅读者并不包含 Web 应用程序开发人员。
这份文件讨论了调整 Web 服务器性能的方法。它也讨论了为什么调整性能很重要,同时还讨论在调整 IIS 5.0 Web服务器时会牵涉到的硬件、软件及测试问题。最后,它还包括一段针对可用来监视及测试服务器性能的工具所作的简短讨论。虽然其中有段讨论是与调整网络应用程序时会发生的问题比较有关,但这份文件不会就此议题深究。如需此议题或其它主题的链接及参照,请参阅这份文件的〈资源〉小节。
将性能调整当作一种艺术
调整服务器性能的方式就像 Internet 上的网站一样的多。根据贵公司想要在 Web上如何呈现所作的选择而定,您可能必须负责将您的 Web 服务器调整成最适合于提供静态的网页或动态编译的应用程序页。每一种站点会有不同的硬件、应用程序的需求,以及 Windows 2000 和 IIS 性能调整选项。另一个需要考虑的是您实际上希望网络处理的传输量,特别是尖峰负载期间。负载量会影响Web服务器的性能,而不同的商业活动 (例如贵公司宣传活动的频繁程度) 会决定您的网站必须处理的用户请求数目。您应该清楚知道这些负载的内容,并且在让它们上线之前,先在网络上仿真它们。有几个原因可以说明为什么没有任何关于如何调整Web服务器而提出的金玉良言。
调整Web服务器的性能应该被视为一种艺术,而不是一种科学:尝试及错误是决定何种设置及硬件对您的网站需求最适合的重要手法。虽然了解本文所讨论的技术性设置很重要,但了解您的应用程序或网站的设置文件,以及它们在不同状态下会如何运行也同样重要。就像一位画家用炭笔简单绘出一种他想如何完成一幅画的感觉,您同样应备有一个计划来评估您网站服务器的性能。第一个步骤是在您要测试的网站上建立一个受控制的环境、并进行预测负载的性能分析,然后在让 Web 服务器在 Internet上发布之前,先测量该环境中的性能。因为服务器的性能会因不同期间存取您网站的浏览器传输量产生明显的差异,所以请确定在不同负载下观察与记录您的网站测试,以获取网络上活动的真实画面。在此期间,您可能要有一份备份计划,以防止您的网站在部署前后因任何问题造成停机。
若要提高服务器性能,请检查系统的每一部份,以找出潜在的瓶颈。造成瓶颈的原因可能是硬件设置不恰当或不正确,或是 IIS 或 Windows 2000中的软件设置所致。完善的监视计划会检查各方面的性能。
调整您的 Web 服务器有几个有利于商业上的考虑。第一,因调整而提高性能,进而缩短了等待服务器响应的时间,可让用户获得更好的经验。调整将有助于避免使用上的瓶颈,并可让你的硬件使用更久,并且不用经常升级或是拉长为你的 Web Farm 购置新服务器时间。如此能让您在真正需要购买例如内存、处理器或网卡等零件时还有预算。
除了这些商业上的考虑之外,还有一些技术上的原因与调整Web 服务器性能有关。调整可让您充分利用既有的硬件,并决定此时及日后要执行哪些升级。通过调整 Web 服务器,您可以最大化网络应用程序的生产力并最小化响应时间,同时判定其中哪几个应用程序正按请求处理高负载。
需要调整的内容
调整 Web 服务器的困难之一是如何精确地知道要调整什么。基于这个理由,在调整设置、硬件、Web 服务器,或甚至升级到 Windows 2000及 IIS 5.0 之前,先监视 Web 服务器是很重要的。这点是再怎么强调都是不够的:收集关于您服务器的基准信息可让您了解它们的行为,并精确制定出Web 服务器性能的目标。您可以使用内建在操作系统及 IIS 中的 [性能监视器] 及 [性能计数器] 来建立此基准。一旦收集基准信息后,请分析它们以判定在作一个改变 (不论是添加 RAM 或调整内部 IIS 设置也好) 之前,可能会有哪些性能问题的潜在原因。一旦作了改变,请记得再次监视服务器。您所作的改变可能会在您系统的其它组件上造成无法预测的影响。
这个主题分成五小节:硬件调整议题、Web 应用程序调整议题、用来监视及压力测试系统的工具、安全性考虑、影响 Web 服务器性能的 Windows 2000 及IIS 5.0 内部设置。
Windows 2000 Server 上的 IIS 5.0 能有效地调配二至四个处理器。如果您正在考虑添加额外的处理器,请衡量您网站的业务需求。例如,如果您在服务器上主控的大多是静态内容,则备有两个处理器的计算机应已足够。如果主控的是会动态生成的内容,则备有四个处理器的安装可以解决您的问题。不过,如果站点上的工作量需要大量的 CPU,则单一计算机将无法符合请求的数量。如果您的站点是这种情况,则应将它调配成跨多台服务器。如果已经在多重服务器上执行您的站点,请考虑添加更多服务器。
不过,您应该明了 Windows 2000 及 IIS 5.0 的最大性能增益来自于解决内存问题。在决定改变Web 服务器上处理器的个数之前,请先排除内存问题,再监视下列「性能计数器」。
· System : Processor Queue Length。这个计数器显示了在由系统上所有处理器共享的队列中,等候执行的线程数目。如果这个计数器提供了两个或以上的自变量值,则表示手边就有一个处理器瓶颈。
基本上,网络是客户端向服务器传送请求的线路。它花在您的服务器上来回传递这些请求及响应的时间,对用户能察觉的服务器性能来说是个最大限制因素之一。这种请求-响应的循环时间就称为等待时间,等待时间对于Web 服务器管理员来说几乎是无法控制的。例如,您对 Internet 上速度缓慢的路由器,或是客户端及服务器之间的物理距离所能作的处理实在不多。
在主要是由静态内容组成的站点上,网络带宽最有可能是性能瓶颈的来源。即使是一般的服务器也可能用满一条 T3 连接 (45mbps) 或 100mbps Fast Ethernet 连接。您可以通过调整当前的连接,或尽可能最大化有效的带宽来改善这些问题。
测量有效带宽最简单的方法是判定您的服务器是以哪个速度传送及接收资料的。有一些「性能」计数器可以测量您的服务器上许多组件中的数据传输。包括 Web、FTP 及 STMP 服务、TCP 对象、TP 对象及「网络接口」对象上的计数器。每一个计数器都会反应不同的 Open System Interconnectivity (OSI) 层。这些计数器及其分析的详细清单,请参阅随 Windows 2000 Server Resource Kit 一起发行的《Internet Information Services 5.0 资源指引》。请特别参阅〈监视及调整服务器〉该章中的〈网络 I/O〉小节。不过,若要开始使用下列计数器︰
· Web Service: Maximum Connections 及 Web Service: Total Connection Attempts 。如果您正在计算机上执行的其他服务也使用网络连接,则应监视「Web Service: Maximum Connections」及「Web Service: Total Connection Attempts」计数器,以检查您的Web服务器是否能够尽可能地使用它需要的连接数目。请记得将这些数字与内存及处理器使用量作比较,如此才能确定连接就是问题,而不是其它组件有问题。
· Active Server Pages︰Requests/Sec、Active Server Pages︰Requests Executing、Active Server Pages︰Request Wait Time、Active Server Pages︰Request Executing Time 及 Active Server Pages︰Requests Queued。如果正在服务器上执行 ASP 应用程序,则这些计数器可让您了解这些应用程序执行的状况有多好。「Active Server Pages︰Requests/Sec」不含静态文件或其它动态内容的请求,它会根据 ASP 网页的复杂度及您 Web 服务器的容量明显地变动。如果这个计数器在服务器上的传输量处于尖峰期间出现低值的话,则您的应用程序可能会导致瓶颈。「Requests Executing」显示目前正在执行的请求数目;「Request Wait Time」显示最近的请求在队列中等待的毫秒数;「Request Execution Time」显示最近的请求花在执行上的毫秒数。理想的状态是「Requests Queued 」及「Request Wait Time」应保持接近 0,但它们会在不同的载量下起伏变动。最大「Requests Queued」数目是由 AspRequestQueueMax 的 Metabase 设置来决定。如果达到此限制,则客户端浏览器将显示 [HTTP 500/ 服务器太过忙碌]。如果这些数字大幅偏离了预计的范围,则您的 ASP 应用程序可能必须重写才能提高性能。由于「Request Execution Time」并非一个平均值,所以会有些误差。例如,如果您固定会接收一页 30 个请求,每页是以 10 毫秒到 500 毫秒的速度执行每一个请求,则即使平均执行时间超过 25 毫秒,但是计数器可能会显示 10 毫秒。要为「Requests Executing」说出一个最适当的值很难。如果页面执行得很快,而且不会等待 I/O (加载文件或提出数据库查询),则这个数字可能会比较低 (比机器忙碌时的处理器个数低一些)。如果页面必须等待 I/O,则执行的页数可能会较高 (接近 AspProcessorThreadMax 乘以处理器个数的值)。如果「Requests Executing」的值是高的、「Requests Queued」是大的,而 CPU 的使用率是较低的,则可能必须增加 AspProcessorThreadMax。启用时,传送的线程会试着最佳化「Requests Executing」。用户的响应时间会与「Request Wait Time」加「Request Execution Time」加网络等待时间的和成比例。
· Web Service: CGI Requests/sec及 Web Servcie: ISAPI Extension Requests/Sec 会报告您的服务器是以哪个速度处理 CGI 及 ISAPI 应用程序请求。如果这些值在负载增加时降低,则可能必须请求应用程序开发人员重新检查他们的程序代码。
附注-ASP 是个「ISAPI Extension」,包含在第二个计数器中。
· Web Service: Get Requests/sec及Web Service: Post Requests/Sec 反应这两个常见 HTTP请求类型是以哪个速度出现在您的服务器上。「Post Request」通常是用于窗体,并传送到 ISAPI (包括 ASP) 或 CGI。「Get Request」会记录几乎所有来自浏览器的其它请求,并包括静态文件、APS 与其它 ISAPI 的请求,以及 CGI 请求。
调整 Web 应用程序
IIS 5.0 对于服务静态 HTML 网页及配上默认的设置值基本就已足够了。如果您的站点主要是静态内容,则许多性能问题可能会与硬件有关。IIS 5.0 为 Web 应用程序提供不错的性能,但若想获得最佳的性能,还需要一些额外的调整。当然,不管服务器软件如何增强,与 Web 应用程序设计及程序代码有关的最佳经验方法的问题依然会存在。虽然本文没有试图讨论调整 Web 应用程序的细节,但本节仍提供一些使它们执行更快的指导及建议。在规划及测试您的 Web 应用程序时,请先考虑下列事项,然后再到实际联机运行的服务器上执行它们。
第一,ISAPI 应用程序比 Active Server Pages (ASP) 应用程序执行得更快,虽然 ASP 的开发费用远比 ISAPI 低。这两种应用程序都比 CGI 应用程序执行得更快。
进程隔离也会影响 Web 应用程序的性能。IIS 5.0 Web 应用程序默认是在进程外的缓冲池 (中度保护) 中执行。接受进程隔离对性能的影响总比冒着服务器停机或资料遗失的风险来的安全,例如因应用程序当机而破坏它与 IIS 5.0 共享的 Ientinfo 进程时就会导致这些风险。有关这个主题的深入讨论,请参阅本文中的〈进程隔离〉小节。
若要增进生产环境中的数据库驱动性能,请使用 Microsoft SQL Server。由于 IIS 及 SQL Server 在足够的内存下执行的情况最好,因此请尝试将资料库存放在不同于 Web 服务的服务器上。在这种情况下,经由网络跨计算机通讯通常比单一计算机上的通讯还快。当 SQL Server 及 IIS 存放在同一台服务器上时,就会经常因为内存不足或循环不够而导致性能降低。此外,请务必建立及维护适当的索引。如此才能最小化数据库查询的输入和输出。最后一点,请尽量多利用被存储的过程(stored procedured)。它们比设计来执行相同工作的 ASP 脚本文件所需的执行时间更少,而且更容易撰写。
若要最佳化动态网络应用程序的性能,很重要的一项工作是让您的应用程序正式在站点上启用前,先测试它们。执行这项工作有个很好用的工具--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 服务器及应用程序部署到联机运行的服务器上之前,先找出并消除其中存在的问题。
以上任一工具的相关信息,请参阅内含在 Windows 2000 Resource Kit 中的联机IIS 5.0 文件。指向其它信息来源的链接则内含在本文的〈资源〉小节中。
windows 2000 及 IIS 5.0 中的功能及设置
如果您目前正在含 IIS 4.0 的 Windows NT Server 4.0 上执行一个经过适当调整的站点,则该站点在 Windows 2000 Server 及 IIS 5.0 上应可顺利地执行。相关信息请参阅 Windows 2000 Performance Test by ZD Labs。 当进行迁移时,您还是要监视你的服务器及站点。您将会注意到在 Windows 2000 及 IIS 5.0 中有些针对增强性能及简化管理而设计的新功能。此外,在 IIS 4.0 中的默认的设置值到了 IIS 5.0 之后已有所改变。本节将讨论这些功能及变化。
将 Windows 2000 设置为应用程序服务器
如果打算将服务器主要当作Web服务器使用,则将服务器计算机设为应用程序服务器是提高性能的最快方法。如此可让您利用较高的 SMP 缩放性、更高的网络性能,及更多 Web 应用程序物理内存的支持。对于执行 COM 的应用程序,则使用 Windows 2000 当作应用程序服务器也会对COM+ 有更多好处。此外,您可以将 COM+ 的交易处理功能当作一个交易监视器使用,以提高数据库应用程序的性能。Windows 2000 Server 会默认安装成文件服务器,因此您必须确定在安装过程中选择了应用程序服务器。不过,即使没有选取,在安装之后再将服务器设为应用程序服务器也很容易。若要选取︰
1. 按一下 [开始],并指向 [设置] 后,再按 [网络和拨号连接]。
2. 选取 [区域连接],并开启它的属性。
3. 选取 [File and Printer Sharing for Microsoft Networks],并开启它的属性。
4. 在 [服务器最佳化] 选项卡上选取 [网络应用程序的数据传输量最大化]。