asp.net相关的性能计数器
以下部分列出其他可用于监视 ASP.NET 应用程序的性能对象和计数器。此列表按性能对象的字母顺序排列,如果字母顺序相同,则按计数器的字母顺序排列。
.NET CLR Exceptions
# of Exceptions Thrown/Sec
每秒引发的受控异常总数。性能随此数目的增大而下降。
.NET CLR Loading
Bytes in loader Heap
类加载程序在所有应用程序域中提交的字节数。
Current App Domains
进程中加载的应用程序域的当前数量。此计数器的值应该比虚拟目录的数量多 1(算上默认应用程序域)。
Current Assemblies
进程中加载的程序集的当前数量。注意,不能从应用程序域中卸载程序集;必须卸载整个应用程序域。对于具有大量页面的站点而言,这是一个问题。
.NET CLR Memory
# Bytes in all heaps
显示 Gen 0 Heap Size、Gen 1 Heap Size、Gen 2 Heap Size 和 Large Object Heap Size 计数器的总和。此计数器指示当前在垃圾回收堆上分配的内存(字节)。
# Gen 0 Collections
显示自应用程序启动以来,第 0 代对象(即,最新、最近分配的对象)已经由垃圾回收功能回收的次数。
当第 0 代中的可用内存不能满足分配请求时,就会发生第 0 代垃圾回收。在第 0 代垃圾回收结束时,此计数器就会增加。高代垃圾回收包含低代回收。当发生高代(第 1 或第 2 代)垃圾回收时,此计数器计数就会明显增加。
该计数器显示上一个观察到的值。_Global_ 计数器值不准确且应该忽略。
# Gen 1 Collections
显示自应用程序启动以来,第 1 代对象已经由垃圾回收功能回收的次数。
在第 1 代垃圾回收结束时,此计数器就会增加。高代垃圾回收包含低代回收。当发生高代(第 2 代)垃圾回收时,此计数器计数就会明显增加。
该计数器显示上一个观察到的值。_Global_ 计数器值不准确且应该忽略。
# Gen 2 Collections
显示自应用程序启动以来,第 2 代对象已经由垃圾回收功能回收的次数。在第 2 代垃圾回收(也称为“完整垃圾回收”)结束时,此计数器就会增加。
该计数器显示上一个观察到的值。_Global_ 计数器值不准确且应该忽略。
Memory
Available Mbytes
计算机上运行的进程的可用物理内存数量(以兆字节为单位)。它是通过将填零的、空闲的和备用的内存列表的空间数量相加到一起来计算的。空闲内存可随时使用;填零内存是指为防止以后的进程看到以前进程使用的数据而填满零的内存;备用内存是指从进程的工作集(它的物理内存)移到服务器的硬盘驱动器上但仍可重新调用的内存。此计数器仅显示最近一次观察到的数值;它不是平均值。
Process
% Processor Time
是所有进程线程使用处理器执行指令所花的时间百分比。指令是计算机执行的基础单位。线程是执行指令的对象,进程是程序运行时创建的对象。此计数包括处理某些硬件间隔和陷阱条件所执行的代码。
Handle Count
由这个进程现在打开的句柄总数。该数字等于这个进程中每个线程当前打开的句柄的总数。
Private Bytes
指这个进程不能与其他进程共享的、已分配的当前内存的字节数。
Thread Count
这个进程中正在活动的线程数目。指令是在处理器中基本的执行单位,线程是指执行指令的对象。每个运行的进程至少有一个线程。
Processor
% Processor Time
处理器执行非空闲线程所花的采样时间所占的百分比。这是通过测量采样间隔中空闲线程处于活跃状态的时间并从间隔持续时间减去该时间来计算的。(当没有其他要运行的线程时,每个处理器均有一个占用处理周期的空闲线程)。此计数器是处理器活动的主要指示器,并显示在采样间隔期间观察到的繁忙时间所占的平均百分比。
Web Service
Bytes Received/Sec
Web 服务每秒接收到的字节数。
Bytes Sent/Sec
Web 服务每秒发送的字节数。
Current Connections
Web 服务当前建立的连接数量。
ISAPI Extension Requests/Sec
Web 服务每秒处理的 ISAPI 扩展请求的数量。
Total Method Requests/Sec
Web 服务每秒接收到的 HTTP 请求数。
计数器的结果分析
Virtual Bytes应该总大于Private Bytes。一般来说,Virtual Bytes跟Private Bytes的变化大致一致。当Virtual Bytes跟Private Bytes的比例关系大于2的时候,程序往往有比较严重的内存碎片。
如果Virtual Bytes 持续增长而Private Bytes保持稳定,说明是Virtual Memory被reserving但是没有使用,内存中残留一些无用的对象
如果Private Bytes 持续增长,而# Bytes in all Heaps不增长,说明有可能是Native Memory Leak,比如COM组件中的Leak
如果Private Bytes ,# Bytes in all Heaps同步增长,说明有可能Leak发生在Managed 代码中
正常情况下,进程启动,所有的app domain加载之后,Bytes in Loader Heap和Current Assemblies应该保持稳定.否则就说明有assembly leak. 对于ASP.NET 程序,如果debug=true,就可能引起assembly leak
相关文章
http://blogs.msdn.com/tess/archive/2008/02/20/net-debugging-demos-lab-3-memory-review.aspx