日期:2008-08-26  浏览次数:21015 次

为什么要调整 Web 服务器?

  调整您的 Web 服务器有几个有利于商业上的考虑。第一,因调整而提高性能,进而缩短了等待服务器响应的时间,可让用户获得更好的经验。调整将有助于避免使用上的瓶颈,并可让你的硬件使用更久,并且不用经常升级或是拉长为你的 Web Farm 购置新服务器时间。如此能让您在真正需要购买例如内存、处理器或网卡等零件时还有预算。

除了这些商业上的考虑之外,还有一些技术上的原因与调整Web 服务器性能有关。调整可让您充分利用既有的硬件,并决定此时及日后要执行哪些升级。通过调整 Web 服务器,您可以最大化网络应用程序的生产力并最小化响应时间,同时判定其中哪几个应用程序正按请求处理高负载。


需要调整的内容

  调整 Web 服务器的困难之一是如何精确地知道要调整什么。基于这个理由,在调整设置、硬件、Web 服务器,或甚至升级到 Windows 2000及 IIS 5.0 之前,先监视 Web 服务器是很重要的。这点是再怎么强调都是不够的:收集关于您服务器的基准信息可让您了解它们的行为,并精确制定出Web 服务器性能的目标。您可以使用内建在操作系统及 IIS 中的 [性能监视器] 及 [性能计数器] 来建立此基准。一旦收集基准信息后,请分析它们以判定在作一个改变 (不论是添加 RAM 或调整内部 IIS 设置也好) 之前,可能会有哪些性能问题的潜在原因。一旦作了改变,请记得再次监视服务器。您所作的改变可能会在您系统的其它组件上造成无法预测的影响。

  这个主题分成五小节:硬件调整议题、Web 应用程序调整议题、用来监视及压力测试系统的工具、安全性考虑、影响 Web 服务器性能的 Windows 2000 及IIS 5.0 内部设置。

  请注意,这些议题相互之间并无关联。要从升级硬件来修改内部设置的话,调整Web 服务器将需要您仔细地监视任何改变对Web 服务器性能的影响。

    监视硬件
    内存

  通常系统中所发生的问题是由于内存不足所导致出来的问题,这是较常见的。您应该先监视内存,确认您的服务器有足够的内存,再于其它组件上增减。若要执行 Windows 2000 上的 IIS 5.0,一个专用Web 服务器所需 RAM 的最小容量是 128MB,但最好是 256MB 到 1GB。额外的内存对于电子商务站点、含大量内容的站点、处理高传输量的站点尤其适用。因为「IIS 文件缓存」默认是使用最多一半可用的内存,因此您备有的内存越多,「IIS 文件缓存」就越多。

  附注:Windows 2000 Advanced Server 最多可支持 8GB 的 RAM,但是「IIS文件缓存」将不会利用 4GB 以上的 RAM。

  若要判定服务器上目前的内存容量是否能满足您的需求,请使用内建在Windows 2000 中的 [性能] 工具 (先前称为 PerfMon)。属于 [性能] 工具一部份的 [系统监视器] 会随着计数器指数的改变而以图形显示。

  此外,请留意您的缓存设置--只添加内存不一定能够解决性能问题。您必须留意 IIS 缓存处理设置以及它们如何影响服务器的性能。如果这些设置对放置在服务器上的负载并不适当的话,则可能不是发生内存不足,而是造成性能瓶颈。这些缓存设置的相关信息,请参阅本文中〈IIS 设置〉及〈附录 1:性能设置〉两节中的说明。如需关于使用 ASP 及 IIS 缓存的讨论,请参阅〈附录 3:ASP 缓存处理〉。

  附注:在使用 [性能] 计数器来监视性能时,可以在 [添加计数器]对话框中任选一个计数器,并按一下 [说明] 来查看该计数器的说明。
请记录下列计数器,以判定是否有和内存相关的性能瓶颈:

  ·    内存︰可用的字节。试着保留至少 10% 的可用内存,以供尖峰时间使用。请记住 IIS 5.0 默认最多会使用 50% 的可用内存,供文件缓存使用。

  ·    内存︰Page Faults/sec、Memory︰Pages Input/sec及Memory︰Page Reads/sec。如果有个程序请求内存中的一页,但系统无法在所需的位置上找到它,就会构成一个分页错误。如果此页位于内存中的其它位置,则此错误便称为软件分页错误。如果必须从磁盘获取此页,则此错误便称为硬件分页错误。大部分的处理器可以处理大量的软件错误而不会引起任何后果。但是,硬件错误却会导致严重的延迟。「Page Faults/sec」是指处理器处理错误页 (包括硬件及软件分页错误) 的整体速度。「Pages Input/sec」是指为了解决硬件分页错误而从磁盘读取的总页数。「Pages Reads/sec」是指为了解决硬件分页错误而读取磁盘的次数。「Pages Input/sec」会大于或等于「Page Reads/sec」,并且能够清楚地让您了解硬件分页错误率。如果这些数字都很低,则服务器应该可以快速地响应请求。如果很高,则可能是因为您用了太多的内存在缓存处理上,而没有留足够的内存供系统的其它部份使用。您可能必须在服务器上添加 RAM 的容量,但是降低缓存的大小也是可行的。

  ·    内存︰Cache Bytes、Internet Information Services Global︰File Cache Hits %、Internet Information Services Global︰File Cache Flushes,及 Internet Information Services Global︰File Cache Hits。第一个计数器「Memory : Cache Bytes」显示「文件系统缓存」的大小,其默认为最多使用 50% 的可用物理内存。由于当缓存的内存快要不足时,IIS 会自动调整它,所以请留意这个计数器行进的方向。第二个计数器是缓存存取次数与缓存请求总数的比例,它会反应出此「IIS 文件缓存」的设置表现的好不好。对于主要由静态文件组成的网站来说,80% 以上的缓存存取次数应是个不错的数字。请比较最后两个计数器的记录文件「IIS Global: File Cache Flushes」及「IIS Global︰File Cache Hits」,以判定您是否正以适当的速度将对象从您的缓存清除。如果清除发生太快,则对象可能会比其应有的频率更常从缓存中清除出来。如果清除发生太慢,就会浪费内存。请参阅〈附录 1︰性能设置〉中关于ObjectCacheTTL、MemCacheSize及 MaxCachedFileSize 对象的说明。

  ·    Page File Bytes : Total。这个计数器反应出系统上分页文件的大小。分页文件越大,系统提供给它的内存就越多。Windows 2000 会自动在系统磁盘驱动器上建立一个分页文件;您可以在每一个逻辑磁盘上建立一个分页文件,并改变现有文件的大小。事实上,将一个分页文件等量分配到不同物理硬盘上可提升分页文件的性能 (请使用不含您的网站内容或记录文件的硬盘)。请记住,系统磁盘驱动器上的分页文件至少应是物理内存的两倍大,这样系统才能在发生当机时,将整个 RAM 的内容写入磁盘中。

  ·    Memory: Pool Paged Bytes, Memory: Pool Nonpaged Bytes, Process: Pool Paged Bytes: Inetinfo, Process: Pool Nonpaged Bytes: Inetinfo, Process: Pool Paged Bytes: dllhost#n, and Process: Pool Nonpaged Bytes: dllhost。「Memory : Pool Pages Bytes」及「Memory : Pool Nonpaged bytes」会监视服务器上所有进程的缓冲池空间。这里列出的其它计数器会监视由 IIS 5.0 直接使用的缓冲池空间,不管是用于您服务器上进行的 Inetinfo 进程 (即 IIS 在其中执行的进程),或是 Dllhost 进程 (即把 Web 应用程序从 Inetinfo 隔离或把 Web 应用程序放在缓冲池中一起执行的进程)。请确定监视服务器上所有 Dllhost 例项的计数器;否则您将无