通过使用 Microsoft Windows 中内置的性能计数器,可以监视性能以判断设备需求。进行更改之后,可使用监视功能判断更改是否达到了预期的效果或者是否需要进一步的更改。
解决内存不足的问题之后,IIS 上将获得最大的性能改善。在作出任何有关更改硬件配置的决定之前,应首选排除内存问题。应首先监视内存以验证服务器是否有足够的内存,然后再继续处理服务器环境其他部分的问题。内存不足引起的问题常常会表现为系统的其他部分的问题。要与 Microsoft Windows Server 2003 家族成员一起运行 IIS 6.0,一个专用的 Web 服务器必须至少有 128 MB RAM,虽然根据自定义应用程序的资源需求情况,可能需要更多的 RAM。如果自定义应用程序要求大量的内存资源,则请使用 256 MB 到 1 GB 的 RAM。对于电子商务站点、具有许多内容的站点,以及流量非常大的站点,内存更大一点特别有益。
可以使用系统监视器判断服务器上的当前内存量是否满足需要。系统监视器以图形方式显示计数器读数随时间的变化。有关系统监视器的详细信息,请参阅性能监视和可伸缩性工具。
监视下面的计数器来判断是否存在与内存有关的性能瓶颈。
计数器 | 监视 |
---|---|
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 Bytes 和 Pool Non-paged Bytes 监视服务器上的所有进程的池空间。
Virtual Bytes 计数器既可以通过 Inetinfo.exe 进程(在这种情况下,当设置为 IIS 5.0 隔离模式时,运行 IIS 的核心),也可以通过在服务器上实例化的 W3wp.exe 进程(在这种情况下,当设置为工作进程隔离模式时,运行隔离的或汇集的应用程序)来监视 IIS 直接保留的虚拟地址空间的量。 Working Set 计数器计量每个进程使用的内存页面的数量。一定要监视服务器上的 W3wp.exe 的所有实例的计数器;否则,您就不能获得 IIS 使用的虚拟内存的准确读数。系统的内存池保留了应用程序和操作系统创建和使用的对象。内存池的内容只有在特权模式下才可以访问。即,只有操作系统的内核才能直接使用内存池;而用户进程不能直接使用。在运行 IIS 6.0 的服务器上,为连接提供服务的线程与该服务使用的其他对象(如文件句柄和套接字)一起存储在非页面缓冲池中。 |
除了添加更多的 RAM 外,还可以使用下面的过程来提高内存性能。有关如何执行这些进程的具体信息,请参阅最新版本的 Internet 信息服务资源工具包。
由于用户要求网站有快速的响应时间以及这些站点能提供不断增加的动态生成的内容量,快速和有效的处理器使用应放在首位。当一个或多个进程消耗了大多数处理器时间时,就会发生瓶颈。这会迫使已准备执行的线程在队列中等待处理器时间。添加其他硬件,无论是内存、硬盘还是网络连接,以试图克服处理器瓶颈并非有效办法,并可能会引发更大的问题。
监视下列计数器以判断是否存在与处理器容量相关的性能瓶颈。
计数器 | 监视 |
---|---|
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 配置数据库中更改
请求和响应来往于服务器之间所花费的时间是用户能感觉到的服务器性能中最大的限制因素之一。在主要由静态内容组成的站点上,网络带宽是最可能引起性能瓶颈的原因。可以通过调整与网络建立的连接和最大限度地提高有效的带宽来减轻一些问题。
测量有效带宽最简单的方法是判断服务器发送和接收数据的速率。有许多性能计数器可以测量服务器许多组件中的数据传输。其中包括 WWW 服务、FTP 服务和 SMTP 服务、以及“TCP”对象、“IP”对象,以及“网络接口”对象上的计数器。每个计数器都反映了不同的开放系统互连 (OSI) 层。有关这些计数器和它们的分析的详细列表,请参阅性能计数器参考。有关如何管理应用程序使用的带宽量的信息,请参阅限制带宽。
监视下列计数器以判断网络容量和带宽。
计数器 | 描述 |
---|---|
Network Interface\Bytes Total/sec | 要确定网络连接是否产生了瓶颈,可以比较 Bytes Total/sec 计数器与网络适配卡的总带宽。为了给通信流量预留空间,应将正常使用率限制到容量的 50% 以下。如果此数字非常接近于连接的容量,而处理器和内存使用率适中,则说明连接可能有问题。 |
WWW serviceCurrent Connections WWW service\Total Connection Attempts |
如果在计算机上运行了也使用网络连接的其他服务,则应监视这些计数器以检查 Web 服务器是否可以使用它所需要的那么多的连接。请记住将这些数字与内存和处理器使用数据进行比较,这样便可以判断连接是否有问题。 |
优化 IIS 访问硬盘的次数可以减少硬盘瓶颈并且大大地改善服务器的性能。优化磁盘访问涉及监视内存需求并确定被请求的文件的大小和数量。硬盘瓶颈在那些带有大量可随机访问文件集的站点上经常发生。如果服务器 RAM 不足,或者正在请求大量不同的文件,或者请求的文件过大,IIS 无法在 RAM 中为加快访问速度而保留文件的副本。结果,IIS 必须从硬盘中检索文件。硬盘的访问的速度和大小决定了 IIS 查找请求文件的速度。
IIS 将日志写入到磁盘,因此您应看到甚至有 100 % 客户端缓存命中率的定期磁盘活动。一般而言,如果除了日志记录之外有很高的磁盘读取或写入活动,则说明系统的其他方面需要调整。例如,硬页错误会引起大量的磁盘活动,但只表示 RAM 不足。
要改善磁盘访问情况,请使用独立磁盘冗余阵列 (RAID) 和带区磁盘集。有关 RAID 和带区磁盘集的详细信息,请参阅 Windows Server 2003 家族帮助。如果在使用数据库服务器的同一计算机上运行 IIS,您可能需要千兆字节 RAM,以最大限度地降低访问延迟或者需要带有很大的 RAM 缓存的磁盘控制器。您还需要保留一定的冗余度,这样当某一驱动器失效时,不用立即从备份副本中还原。许多新控制器允许热交换,这样,无需强制服务器停机,就可以替换发生故障的驱动器。
要监视硬盘驱动器,使用系统监视器来记录 CPU 使用率,网卡饱和度以及 Physical Disk 对象的 % Disk Time 计数器。如果 % Disk Time 计数器值很高,但 CPU 和网卡均没有饱和,则说明磁盘驱动器造成了瓶颈。
通常,应使用 Physical Disk 计数器以在服务器忙时监视磁盘读取次数的最高值。如果有足够的 RAM,则大多数连接会造成缓存命中,除非在同一服务器上存储了一个数据库并且客户端进行不同的查询。这种情况妨碍了缓存。
请注意,日志记录也会导致磁盘瓶颈。要避免由日志记录引起的瓶颈,应将日志放在单独的设备上。如果服务器上没有明显的磁盘密集型问题,但您无论如何都会看到大量的磁盘活动,则应立即检查服务器上的 RAM 量,以确保有足够的内存。
要判断磁盘访问的频率,应记录下列计数器。
计数器 | 监视 |
---|---|
Processor\%Processor Time Network Interface Connection\Bytes Total/sec PhysicalDisk\% Disk Time PhysicalDisk\Current Disk Queue Length |
如果所有四个计数器的值都较高,则硬盘没有为站点制造瓶颈。然而,如果 % Disk Time 较高,并且处理器和网络连接都没有饱和,则说明硬盘产生了瓶颈。对于任何持续的时段,Current Disk Queue Length 值不应该大于 2。
如果在服务器上没有启用 Physical Disk 性能计数器,则请在命令提示符处使用 diskperf -yd 命令。 |