内存分析

内存分析需要使用的计数器:Memory性能对象和Physical Disk性能对象的计数器。
内存分析的主要方法和步骤:

  1. 查看Memory->Available Mbytes指标
    Available Mbytes:
    描述:
    Available MBytes 指能立刻分配给一个进程或系统使用的物理内存数量,以 MB 为单位表示。它等于分配给待机(缓存的)、空闲和零分页列表内存的总和。
    建议指标:
    该值不宜低于400。一般要保留10%的可用内存,假设系统有8G内存,则该值最好不要低于800M
    说明:
    过高说明内存资源即将耗尽,应考虑增加内存
    如果该指标的数据比较小,系统可能出现了内存方面的问题,需要继续下面步骤进一步分析
  2. 注意Memory->Pages/sec、Memory->Page Reads/sec和Memory->Page Fault/sec的值
    操作系统会利用磁盘较好的方式提高系统可用内存量或者提高内存的使用效率。这三个指标直接反应了操作系统进行磁盘交换的频度
    Pages/sec:
    描述:
    Pages/sec 是指为解决硬页错误从磁盘读取或写入磁盘的速度。这个计数器是可以显示导致系统范围延缓类型错误的主要指示器。它是 Memory\Pages Input/sec 和 Memory\Pages Output/sec 的总和。是用页数计算的,以便在不用做转换的情况下就可以同其他页计数如: Memory\Page Faults/sec 做比较,这个值包括为满足错误而在文件系统缓存(通常由应用程序请求)的非缓存映射内存文件中检索的页
    建议指标:
    该值不宜超过20
    说明:
    此值持续高于几百,说明内存中有很多东西需要与硬盘交换,可能有内存问题,应考虑增加内存或更换内存
    Page Fault/sec:
    说明:
    每秒发生页面失效次数,页面失效次数越多,说明操作系统向内存读取的次数越多。此时需要查看Page Reads/sec的计数值,该计数器的阀值为5,如果计数值超过5,则可以判断存在内存方面的问题。
  3. 根据Physical Disk性能对象的计数器值分析性能瓶颈
    对Physical Disk计数器对象的分析包括对Page Reads/sec和%Disk Time及Average Disk Queue Length的分析。如果Page Reads/sec很低,同时%Disk Time和Average Disk Queue Length的值很高,则可能有磁盘瓶颈。但是队列长度增加的同时Page Reads/sec并未降低,则是内存不足

内存计数器阀值

  1. Memory->Available Bytes
    建议的阀值:
    对于具有较大内存的计算机>=10%可用空间
    对于较小内存也需要大于4MB空间可用
    说明:
    Available Bytes剩余的可用物理内存,单位是兆字节,表明进程当前可使用的内存字节数
  2. Memory->Pages/sec
    建议的阀值:
    Pages/sec<=20
    说明:
    操作系统经常会利用磁盘交换的方式提高系统的可用的内存量或是提高内存的使用效率。
    Pages/sec是指为解决硬页错误从磁盘读取或写入磁盘的速度。这个计数器是可以显示导致系统范围延缓类型错误的主要计数器。它是Memory->Pages Input/sec和Pages Output/sec的总和。是用页数计算的,以便在不同做转换的情况下就可以同其他页计数,如:Memory->Pages Fault/sec做比较,这个值包括为错误而在文件系统缓存(通常由应用程序请求)的非缓存映射内存文件中检索的页。如果Pages/sec的值为20或更大,应进一步研究页交换活动。Pages/sec的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致
  3. Memory->Page Faults/sec
    建议的阀值:
    5
    说明:
    Page Fault/sec值在这个进程中执行线程造成的页面错误出现的速度。当线程引用了不在主内存工作集中的虚拟内存页即会出现Page Fault。如果它在备用表中(即已经在主内存中)或另一个共享页的处理正在使用它,就会无法从磁盘中获取页
  4. Paging File->%Usage
    建议的阀值:
    70%以上
    说明:
    与Available Bytes和Pages/sec一起复查该值,了解计算机的页交换活动

CPU监控

  1. 首先看System->%Total Processor Time性能计数器的计数值
    该计数器的值体现服务器整体处理器利用率,对多处理器的系统而言,该计数器提醒所有CPU的平均利用率。如果该值持续超过90%,则说明整个系统面临着处理器方面的瓶颈,需要通过增加处理器来提高性能
    %Total Processor Time:
    描述:
    % Processor Time 指处理器用来执行非闲置线程时间的百分比。计算方法是,度量处理器用来执行空闲线程的时间,然后用 100% 减去该值。(每个处理器有一个空闲线程,该线程在没有其他线程可以运行时消耗周期)。此计数器是处理器活动的主要指示器,显示在采样间隔期间所观察的繁忙时间平均百分比。应注意,对处理器是否空闲的计算是在系统时钟的内部采样间隔期间(10ms)执行的。考虑到现在的处理器速度非常快,因此,在处理器可能会用大量时间为系统时钟采样间隔之间的线程提供服务时,% Processor Time 会低估处理器利用率。当恰好进行采样后即向计时器发出信号时,更可能对应用程序做出不准确地度量,基于工作负荷的计时器应用程序是一个这样的示例。
    建议指标:
    该监控内容不宜超过80%
    说明:
    过高说明CPU资源即将耗尽,应增加CPU资源或实施分布式策略
  2. 查看每个CPU的Processor->%Processor Time和Processor->%User
    Time和Processor->%Privileged Time
    Processor->%User Time是系统非核心操作消耗的CPU时间,如果该值较大,可以考虑是否能够通过友好算法等方法降低这个值。如果该服务器时数据库服务器,Processor->%User Time值较大的原因很可能是数据库的排序或是函数操作消耗了过多的CPU时间,此时可以考虑对数据库系统进行优化
  3. 研究系统处理器瓶颈
    查看System->Processor Queue Length计数器的值,当该计数器的值大于CPU数量的总数+1时,说明产生了处理器阻塞。在处理器的%Process Time很高时,一般都是处理器阻塞,但产生处理器阻塞时,Processor->%Process Time计数器的值不一定很大,此时就必须查找阻塞的原因

CPU计数器阀值

  1. Processor->%Processor Time
    建议的阀值:
    85%
    说明:
    查找占用处理器时间高百分比的进程。升级到更快的处理器或安装其他处理器
  2. Processor->Interrupts/sec
    建议的阀值:
    取决于处理器,每秒1000次中断是好的起点
    说明:
    此计数器的值是明显增加,而系统活动没有相应的增加则表明存在硬件问题。确定引起中断的网络适配器、磁盘或者其他硬件
  3. Server->Bytes Total/sec
    建议的阀值:
    /
    说明:
    如果所有的服务器Bytes Total/sec和与网络的最大传送速度几乎相等,则可能需要将网络分段
  4. Server->Work Item Shortages
    建议的阀值:
    3
    说明:
    如果值达到该阀值,请考虑将DWORD项InitWorkItems(在启动期间分配给处理器的工作项数)或者MaxWorkItems(服务器可以分配的接收缓冲区的最大数)添加到注册表(在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 下面)。项InitWorkItems的范围可以是从1到512,同时MaxWorkItems的范围可以是从1到65535。以InitWorkItems的任何值以及MaxWorkItems的值4096开始,并一直加倍这些值,直到Server->Work Item Shortages阀值低于3
  5. Server->Pool Paged Peak
    建议的阀值:
    物理RAM的数量
    说明:
    此值是最大页面文件大小和物理内存数量的指示器
  6. Server Work Queue->Queue Length
    建议的阀值:
    4
    说明:
    如果值达到此阀值,则可能存在处理器瓶颈。这是即时计数器;观察在多个间隔上的值

磁盘监控

  1. 与Processor->Privieged Time合并进行分析
    如果在Physical Disk计数器中,只有%Disk Time比较大,其他值都比较适中,硬盘可能会是瓶颈。若几个值都比较大,且数值持续超过80%,则可能是内存泄露
    \PhysicalDisk(_Total)% Disk Time:
    描述:
    Disk Time 指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。
    建议指标:
    此值不宜超过10
    说明:
    此值过高,说明硬盘响应效率较低,应换用更高性能的硬盘
  2. 根据Disk Transfers/sec进行分析
    一般来说,定义该数值小于15ms为优秀,介于1530ms之间为良好,3060之间为可接受,超过60ms则需要考虑更换或是硬盘的RAID方式

磁盘计数器阀值

  1. Physical Disk->%Free Space和Logical Disk->%Free Space
    建议的阀值:
    15%
  2. Physical Disk->%Disk Time和Logical Disk->%Disk Time
    建议的阀值:
    90%
  3. Physical Disk->Disk Reads/sec和Physical Disk->Disk Writes/sec
    建议的阀值:
    取决于制造商的规格
    说明:
    检查磁盘的指定传送速度,以验证此速度没有超过规格。通常,Ultra Wide
    SCSI磁盘每秒可以处理50到70次I/O操作。注意,无论I/O是顺序的还是随机的,都会对磁盘的每秒读写速率产生很大的影响
  4. Physical Disk->Current Disk Queue Length
    建议的阀值:
    主轴数+2
    说明:
    这是即时计数器,观察在多个间隔上的值。对于随时间变化的平均值,可试用Physicial Disk->Avg.Disk Queue Length

进程分析方法

  1. 查看进程的Process->%Processor Time值
    每个进程的%Processor Time反映进程所消耗的处理器时间。用不同进程所消耗的处理器时间进行对比,可以看出具体哪个进程在性能测试过程中消耗了最多的处理器时间,从而可以据此对应用进行优化
  2. 查看每个进程产生的页面失效、
    可以用每个进程产生的页面失效(通过Process->Page Faults/sec计数器获得)和系统页面失效(通过Memory->Page Faults/sec计数器获得)的比值,来判断哪个进程产生了最多的页面失效,这个进程要么是需要大量内存的进程,要么是非常活跃的进程,可以对其进行重点分析
  3. 了解进程的Process->Private Bytes
    Process->Private Bytes是指进程所分配的无法与其进程共享的当前字节数量。该计数器主要用来判断在性能测试过程中有无内存泄露。例如:对于一个IIS之上的Web应用,可以重点监控inetinfo进程的Private Bytes。如果在性能测试过程中,该进程的Private Bytes计数器值不断增加,或是性能测试停止一段时间,该进程的Private Bytes仍持续在高水平,则说明应用存在内存泄露

网络分析方法

  1. Network Interface->Bytes Total/sec
    发送和接收字节的速率,可以通过该计数器值来判断网络链接速度是否是瓶颈,具体操作方法是用该计数器的值和当前网络的带宽进行比较
  2. 与Processor->Privileged Time合并进行分析
    如果在Physical Disk计数器中,只有%Disk Time比较大,其他值都比较适中,硬盘可能会是瓶颈。若几个值都比较大,且数值持续超过80%,则可能是内存泄露。

ASP.NET监控
Request Wait Time
地址:
\ASP.NET\Request Wait Time
描述:
最近的请求在队列中等待的毫秒数。
建议指标:
此值不宜超过10000
说明:
此值过高说明IIS已经无法承受更多的请求,应考虑实施分布式策略