此主题介绍了可以用来监视下列硬件组件的计数器,并包括了每个组件的建议值和其他调整策略。

监视内存(上)
监视处理器容量 (上)
监视多处理器系统(上)
监视网络容量和带宽 (下)
监视和优化硬盘(下)

 

 

 

监视内存
       解决内存不足的问题之后,IIS 上将获得最大的性能改善。在作出任何有关更改硬件配置的决定之前,应首选排除内存问题。应首先监视内存以验证服务器是否有足够的内存,然后再继续处理服务器环境其他部分的问题。内存不足引起的问题常常会表现为系统的其他部分的问题。对于电子商务站点、具有许多内容的站点,以及流量非常大的站点,内存更大一点特别有益。

 

       可以使用系统监视器判断服务器上的当前内存量是否满足需要。系统监视器以图形方式显示计数器读数随时间的变化。

 

       监视下面的计数器来判断是否存在与内存有关的性能瓶颈:



计数器

监视

Memory\Available Bytes

试图保留至少 10% 的可用内存以供高峰时间使用。

Memory\Page Faults/sec

Memory\Pages Input/sec

Memory\Page Reads/sec

Memory\Transition Faults/sec

如果进程请求内存中的某个页面而系统无法在请求的位置找到它,就会产生页错误。如果该页在内存中的其他地方,那么该错误叫做软页错误(由 Transition Faults/sec 度量)。如果该页必须从磁盘中检索,那么该错误就叫作硬页错误。大多数处理器可以处理大量的软错误而不会造成任何后果。然而,硬错误会造成严重的延迟。

Page Faults/sec 是处理器处理硬页错误和软页错误的总体速率。Pages Input/sec 是为解决硬页错误而从磁盘读取的页的总数。Page Reads/sec 是为解决硬页错误而读取磁盘的次数。Pages Input/sec 将大于等于 Page Reads/sec,并可以使您很好地了解硬页错误率。如果这些数字较低,则服务器响应请求的速度可能很快。如果它们较高,可能是因为您为缓存分配的内存太多,而没有为系统的其他操作保留足够的内存。可能需要提高服务器的 RAM 量,虽然减少缓存大小也是一个有效办法。

Memory\Cache Bytes

显示文件系统的大小。默认情况下,缓存被设置为最多可以使用 50% 的可用物理内存。由于 IIS 会自动在内存不足的情况下减少缓存,因此要确保监视此计数器的趋势。

WWW service cache\File Cache Flushes

WWW service cache\File Cache Hits

WWW service cache\File Cache %

这些计数器描述了用户模式文件缓存。文件缓存基本上是一个文件名或者文件内容缓存。如果用户请求一个文件,IIS 就会搜索文件缓存,如果它位于缓存中,就返回该文件。如果 IIS 在缓存中找不到该文件,它将从硬盘中读取并返回该文件,从而导致硬页错误。

 

File Cache Flushes 表示了 IIS 从万维网发布服务 (WWW 服务)缓存中清除条目的次数。如果文件已经更改或者如果在 30 秒内没有访问文件,将清除条目。如果该计数器值较高,IIS 就用没有被访问的文件填充缓存,随后再将这些文件清空。

File Cache Hits 是 IIS 在缓存中找到文件的次数。

 

File Cache % 是缓存命中率。这是 IIS 在缓存中找到请求的文件的次数百分比。如果缓存命中率较低(例如,70%),您可能需要考虑围绕能轻易在文件缓存中找到的少量的“热门”信息重新设计站点,从而改善性能。

Process\Page File Bytes

Process\Page File Bytes Peak

Paging File\% Usage

Paging File\% Usage Peak

这些计数器反映了在使用中的页面文件实例的数量。页面文件越大,系统提交给它的内存越多。Windows Server 2003 家族成员在系统驱动器上创建页面文件。可以在每个逻辑磁盘上创建页面文件,并可更改现有文件的大小。事实上,通过跨多个单独的物理驱动器对页面文件进行条带化,可以改善页面文件的性能(即,它所使用的驱动器不包含站点的内容或日志文件)。记住,系统驱动器上的页面文件至少应是物理内存大小的两倍,这样,系统便可以在系统意外地锁定或关闭的情况下将 RAM 中的全部内容写入磁盘。

Memory\Pool Paged Bytes

Memory\Pool Non-paged Bytes

Process\Virtual Bytes (W3wp.exe)

Process\Virtual Bytes (Inetinfo.exe)

Process\Working Set (W3wp.exe)

Process\Working Set (Inetinfo.exe)

Pool Paged BytesPool Non-paged Bytes监视服务器上的所有进程的池空间。

Virtual Bytes 计数器既可以通过 Inetinfo.exe 进程,也可以通过在服务器上实例化的 W3wp.exe 进程(来监视 IIS 直接保留的虚拟地址空间的量。

Working Set 计数器计量每个进程使用的内存页面的数量。一定要监视服务器上的 W3wp.exe 的所有实例的计数器;否则,您就不能获得 IIS 使用的虚拟内存的准确读数。系统的内存池保留了应用程序和操作系统创建和使用的对象。内存池的内容只有在特权模式下才可以访问。即,只有操作系统的内核才能直接使用内存池;而用户进程不能直接使用。在运行 IIS 6.0 的服务器上,为连接提供服务的线程与该服务使用的其他对象(如文件句柄和套接字)一起存储在非页面缓冲池中。



 

除了添加更多的 RAM 外,还可以使用下面的过程来提高内存性能。

  • 改善数据组织。
  • 使用磁盘镜像或带区。
  • 用托管代码(ASP.NET)或 Internet 服务器 API (ISAPI) 应用程序替换通用网关接口 (CGI) 应用程序。
  • 增大页面文件。
  • 消除不必要的功能。
  • 改变文件系统缓存与 IIS 工作集之间的平衡。

监视处理器容量

       由于用户要求网站有快速的响应时间以及这些站点能提供不断增加的动态生成的内容量,快速和有效的处理器使用应放在首位。当一个或多个进程消耗了大多数处理器时间时,就会发生瓶颈。这会迫使已准备执行的线程在队列中等待处理器时间。添加其他硬件,无论是内存、硬盘还是网络连接,以试图克服处理器瓶颈并非有效办法,并可能会引发更大的问题。

 

监视下列计数器以判断是否存在与处理器容量相关的性能瓶颈:

计数器

监视

System\Processor Queue Length

显示队列中等待执行的并由系统上的所有处理器共享的线程的数量。如果此计数器有两个或两个以上的持续不变的线程,则说明服务器出现瓶颈。

Processor\%Processor Time

处理器瓶颈的特征在于这样的情况,其中,% Processor Time 数字较高,而网络适配卡和磁盘 I/O 低于容量值。在多处理器计算机上,请检查 % Processor Time 计数器,以查找处理器和处理时间之间的任何不平衡现象。

Thread (svchost/host number)\Context Switches/sec

System\Context Switches/sec

如果您决定增加任何线程池的大小,则应监视此计数器。提高线程的数量可能会将上下文开关的数量提高到某一点,造成性能降低而不是提高。如果每秒钟上下文开关达到一万或更多,则说明该计数器的值较大。如果看到该数字有这么大,则请考虑降低线程池的大小。可能很难平衡线程与由连接和请求计量的总体性能。每次调整线程时,都应进行总体性能监视,以了解性能是提高还是降低了。

要判断是否应调整线程计数,应将线程数量和进程中的每个线程的处理器时间与总处理器时间进行比较。如果线程持续处于忙状态,但没有完全使用处理器时间,则可以通过产生更多的线程来改善性能。然而,如果所有线程都忙,并且处理器接近于它们的最大容量,最好在多台服务器之间分布负载而不是提高线程的数量。

Processor\Interrupts/sec

Processor\% DPC Time

可以使用这些计数器判断处理器花费在中断和延迟的过程调用上的时间长短。这两个因素可能是造成处理器上负载的另一个原因。客户端请求可能是中断和延迟的过程调用的主要原因。一些新的网络适配卡包括中断调解,它会在中断的级别太高时将中断堆积在缓冲区中。

监视多处理器系统   

       IIS 可以在多处理器计算机上缩放,但可伸缩性可能会由于网站和 Web 应用程序的拙劣设计而削弱。Web 园和进程回收可以帮助最大限度地减少与不完善的应用程序相关的性能问题。然而,一定要监视和测试多处理器计算机上的网站和 Web 应用程序的可伸缩性。在更改多处理器计算机的设置之前,应排除系统的所有其他方面的瓶颈。

 

       还应考虑向特定的处理器指派进程(叫做处理器关系),以更好地管理服务器处理请求和应用程序处理的方式。此外,在更改多处理器计算机的设置之前,应在 IIS 中启用服务质量功能。服务质量功能用于限制特定网站或 Web 应用程序使用的资源,以确保系统的其他部分有足够的资源使用。

 

       监视下列计数器以判断是否存在与多处理器计算机相关的性能瓶颈:

计数器

监视

Processor\% Processor Time (_Total)

通过将采样间隔内所有处理器的平均非空闲时间相加并将总和除以处理器的数量,即可衡量计算机中所有处理器的处理器活动。例如,如果平均起来,所有处理器在半个采样间隔内处于忙状态,则显示 50%。如果半数处理器在整个间隔内处于忙状态,而其他的处理器处于空闲状态,也显示 50%。

Thread\% Processor Time (_Total/_Total)

衡量线程的处理器时间量。

 

管理多处理器系统中的处理器关系

       设置处理器关系意味着向特定的处理器指派特定的进程或应用程序。控制处理器关系可以通过减少线程从一个处理器移动到另一个处理器时处理器缓存刷新的次数来提高性能。对于专用的文件服务器,这可能是一种好的选择。然而,请注意,为程序分配特定的处理器可能会不允许其他程序线程迁移到最不繁忙的处理器。

 

       如果要为一个处理器指派特定的进程或程序,以牺牲其他进程为代价提高其性能,则请在 IIS 配置数据库中更改 SMPProcessorAffinityMask 属性