ASP.NET 支持两组性能计数器:系统和应用程序。前者在 ASP.NET 性能计数器对象中的 PerfMon 中公开;后者在 ASP.NET Applications 性能对象中公开。ASP.NET 性能对象中的 State Server Sessions 计数器(仅适用于在其中运行状态服务器的服务器计算机)和 ASP.NET Applications 性能对象中的 Sessions 计数器(仅适用于进程中发生的用户会话)之间存在很大的差异。

注意 每 400 毫秒更新一次与每个性能计数器关联的值。

在监视 ASP.NET Web 应用程序的性能时,应该始终跟踪下表中列出的性能计数器。

性能对象 性能计数器
ASP.NET Application Restarts
ASP.NET Requests Queued
ASP.NET Worker Process Restarts
ASP.NET Applications Errors Total
ASP.NET Applications Requests/Sec
Processor % CPU Utilization

% CPU Utilization 计数器监视 Web 服务器计算机上的 CPU 使用情况。无论客户端负载如何,CPU 使用率很低或者无法达到 CPU 最大使用率就意味着 Web 应用程序中存在资源或锁定竞争。

此外,在确定 Web 应用程序性能问题时,下表中列出的性能计数器是非常有用的。

性能对象 性能计数器
ASP.NET Applications Pipeline Instance Count
.NET CLR Exceptions # of Exceps Thrown
System Context Switches/sec

# of Exceps Thrown 计数器显示应用程序中引发的异常数量,因为它们可能会对性能造成不利影响。但是,某些代码路径必须依赖异常才能正常工作。例如,HttpResponse.Redirect 方法始终引发一个无法捕获的异常 ThreadAbortException。因此,使用 Errors Total 计数器跟踪引发的异常数量以查看异常是否在应用程序上生成错误更有用处。

Context Switches/sec 计数器测量 Web 服务器计算机中所有 CPU 切换线程上下文的速率。如果此计数器的数值较大,则表明锁定竞争很激烈,或者线程在用户和内核模式之间频繁切换。可能还需要使用采样分析器和其他工具进行进一步的分析。

以下列表详细介绍了 ASP.NETASP.NET Applications 性能对象中的计数器。

ASP.NET 系统性能计数器

ASP.NET 支持以下 ASP.NET 系统性能计数器。它们汇集 Web 服务器计算机上所有 ASP.NET 应用程序的信息,或者它们通常应用于运行相同应用程序的 ASP.NET 服务器的系统。它们可能包含 Web 场和 Web 园。

Application Restarts
在 Web 服务器的生存期内应用程序已重新启动的次数。每发生一次 Application_OnEnd 事件,应用程序重新启动次数就会增加一次。可能由于以下原因而出现应用程序重新启动:更改 Web.config 文件,更改应用程序 /Bin 目录中存储的程序集,或者对 Web 表单页更改过多。此计数器意外增加可能意味着,未知问题将导致 Web 应用程序关闭。在此类情况下,应该尽早调查原因。

注意 每次重新启动 Internet 信息服务 (IIS) 主机时,就会重置该值。

Application Running
服务器计算机上运行的应用程序的数量。
Requests Disconnected
由于通讯故障而断开的请求数量。
Requests Queued
在队列中等待服务的请求数。当此数值随客户端负载线性增加时,则 Web 服务器计算机已达到它所能处理的并发请求的上限。此计数器的默认最大值为 5,000。可以在计算机的 Machine.config 文件中更改此设置。
Requests Rejected
由于处理请求的服务器资源不足而未执行的请求总数。此计数器表示返回 503 HTTP 状态代码(表示服务器太忙)的请求数量。
Request Wait Time
队列中的最近请求等待处理的亳秒数。
Session State Server Connections Total
存储进程外会话状态数据的计算机的会话状态连接总数。
Session SQL Server Connections Total
存储会话状态数据的 Microsoft SQL Server™ 数据库的会话状态连接总数。
State Server Sessions Abandoned
已明确放弃的用户会话数。它们是由特定用户操作结束的会话,如关闭浏览器或浏览到另一个站点。该计数器只用于运行状态服务器服务 (aspnet_state) 的计算机上。
State Server Sessions Active
当前活动用户会话的数量。该计数器只用于运行状态服务器服务 (aspnet_state) 的计算机上。
State Server Sessions Timed Out
由于用户非活动而处于非活跃状态的用户会话数。该计数器只用于运行状态服务器服务 (aspnet_state) 的计算机上。
State Server Sessions Total
在进程生存期内创建的会话数。此计数器是 State Server Sessions ActiveState Server Sessions AbandonedState Server Sessions Timed Out 的累积值。该计数器只用于运行状态服务器服务 (aspnet_state) 的计算机上。
Worker Process Restarts
在服务器计算机上已重新启动工作进程的次数。如果工作进程意外失败或者有意回收,则可以重新启动该工作进程。当此计数器出现意外增加时,应该尽早调查原因。
Worker Process Running
服务器计算机上运行的工作进程的数量。

ASP.NET Application 性能计数器

ASP.NET 支持以下应用程序性能计数器,可以使用这些计数器来监视单个 ASP.NET 应用程序实例的性能。这些计数器均有一个唯一实例 __Total__,该实例合计 Web 服务器上所有应用程序的计数器(与本主题第一节中描述的全局计数器类似)。__Total__ 实例始终可用。当服务器上没有应用程序时,这些计数器将显示零。

Anonymous Requests
使用匿名身份验证的请求数。
Anonymous Requests/Sec
每秒使用匿名身份验证的请求数。
Cache Total Entries
缓存中的总项数。该计数器既包括由 ASP.NET 页框架在内部使用的缓存,又包括通过公开的 API 在外部使用的缓存。
Cache Total Hits
缓存的命中总数。该计数器既包括由 ASP.NET 页框架在内部使用的缓存,又包括通过公开的 API 在外部使用的缓存。
Cache Total Misses
每个应用程序失败的缓存请求数。该计数器既包括由 ASP.NET 在内部使用的缓存,又包括通过公开的 API 在外部使用的缓存。
Cache Total Hit Ratio
缓存的命中与未命中的比率。该计数器既包括由 ASP.NET 在内部使用的缓存,又包括通过公开的 API 在外部使用的缓存。
Cache Total Turnover Rate
每秒对总缓存的添加数和移除数。这对确定缓存的使用效率很有帮助。如果反复很大,则无法有效地使用缓存。
Cache API Entries
应用程序缓存中的总项数。
Cache API Hits
当只通过外部缓存 API 访问缓存时,缓存中的命中总数。该计数器不跟踪由 ASP.NET 在内部使用的缓存。
Cache API Misses
在通过外部缓存 API 访问时,失败的缓存请求的总数。该计数器不跟踪由 ASP.NET 在内部使用的缓存。
Cache API Hit Ratio
在通过外部缓存 API 访问时,缓存命中与未命中的比率。该计数器不跟踪由 ASP.NET 在内部使用的缓存。
Cache API Turnover Rate
在通过外部 API 使用(不包括 ASP.NET 页框架在内部使用的缓存)时,缓存每秒增加或减少的数量。这对确定缓存的使用效率很有帮助。如果反复很大,则无法有效地使用缓存。
Compilations Total
在当前 Web 服务器进程的生存期内发生的编译总数。当在服务器上动态编译扩展名为 .aspx、.asmx、.ascx 或 .ashx 的文件或代码隐藏源文件时,就会发生这种情况。

注意 在对应用程序的所有部分提出请求时,此数值开始逐步达到峰值。但是,在进行编译时,将产生的二进制数据保存到磁盘(在其中重新使用该数据,直到其源文件发生变化时为止)中。这意味着,即使进程重新启动,计数器仍可保持为零(非活跃),直到修改或重新部署应用程序时为止。

Debugging Requests
在启用调试时发生的请求数。
Errors During Preprocessing
在分析期间发生的错误数。不包括编译和运行时错误。
Errors During Compilation
在动态编译期间发生的错误数。不包括分析程序和运行时错误。
Errors During Execution
在执行 HTTP 请求期间发生的错误总数。不包括分析程序和编译错误。
Errors Unhandled During Execution
在执行 HTTP 请求期间发生的未处理错误的总数。

注意 未处理的错误是指任何未捕获的运行时异常,它转换页面上的用户代码并输入 ASP.NET 内部错误处理逻辑。在以下情况下,此规则出现例外情况:

  • 启用了自定义错误和/或定义了错误页面。
  • 在用户代码中定义了 Page_Error 事件并且清除了该错误(使用 HttpServerUtility.ClearError 方法)或执行重定向。
Errors Unhandled During Execution/Sec
在执行 HTTP 请求期间每秒发生的未处理异常的数量。
Errors Total
在执行 HTTP 请求期间发生的错误的总数。包括任何分析程序、编译或运行时错误。此计数器是 Errors During CompilationErrors During PreprocessingErrors During Execution 计数器的总和。正常工作的 Web 服务器不应生成错误。如果在 ASP.NET Web 应用程序中发生错误,则它们可能会由于错误恢复的代码路径不同而歪曲吞吐量结果。在执行调试之前,调查并修复应用程序中的任何错误。
Errors Total/Sec
在执行 HTTP 请求期间每秒发生的错误数。包括任何分析程序、编译或运行时错误。
Output Cache Entries
输出缓存中的总项数。
Output Cache Hits
从输出缓存中处理的请求总数。
Output Cache Misses
每个应用程序失败的输出缓存请求数。
Output Cache Hit Ratio
从输出缓存中处理的全部请求所占的百分比。
Output Cache Turnover Rate
输出缓存每秒增加或减少的数量。如果反复很大,则无法有效地使用缓存。
Pipeline Instance Count
指定 ASP.NET 应用程序的活动请求管道实例的数量。因为在管道实例内只能运行一个执行线程,所以此数值给出了为某个应用程序处理的并发请求的最大数量。在大多数情况下,在具有负载时最好将此数值控制很低,这表明 CPU 的使用率很高。
Request Bytes In Total
所有请求的总大小(以字节为单位)。
Request Bytes Out Total
发送到客户端的响应的总大小(以字节为单位)。这不包括标准的 HTTP 响应头。
Requests Executing
当前执行的请求数。
Requests Failed
失败请求的总数。如果任何和全部状态代码大于或等于 400,就会增加此计数器。

注意 导致 401 状态代码的请求将增加此计数器和 Requests Not Authorized 计数器。导致 404 或 414 状态代码的请求将增加此计数器和 Requests Not Found 计数器。导致 500 状态代码的请求将增加此计数器和 Requests Timed Out 计数器。

注意 在拒绝请求(无法完成,因为拒绝是由 IIS 而不是由进程模型完成的)时,等价的 ASP 计数器也将增加。

Requests Not Found
由于未找到资源而失败的请求数(状态代码 404、414)。
Requests Not Authorized
由于无授权而失败的请求数(状态代码 401)。
Requests Succeeded
已成功执行的请求数(状态代码 200)。
Requests Timed Out
已超时的请求数(状态代码 500)。
Requests Total
服务启动后的请求总数。
Requests/Sec
每秒执行的请求数。它表示应用程序的当前吞吐量。在恒定负载下,此数值应处于特定的范围内(不包含其他的服务器工作,如垃圾回收、缓存清理线程和外部服务器工具等)。
Sessions Active
当前活动会话的数量。该计数器只受内存中会话状态的支持。
Sessions Abandoned
已明确放弃的会话数。该计数器只受内存中会话状态的支持。
Sessions Timed Out
超时的会话数量。该计数器只受内存中会话状态的支持。
Sessions Total
超时的会话数量。该计数器只受内存中会话状态的支持。
Transactions Aborted
中止的事务数。
Transactions Committed
提交的事务数。
Transactions Pending
进行中的事务数。
Transactions Total
服务启动后的事务总数。
Transactions/Sec
每秒启动的事务数。  

asp.net 的性能计数器相关推荐

  1. [知识库分享系列] 二、.NET(ASP.NET)

    最近时间又有了新的想法,当我用新的眼光在整理一些很老的知识库时,发现很多东西都已经过时,或者是很基础很零碎的知识点.如果分享出去大家不看倒好,更担心的是会误人子弟,但为了保证此系列的完整,还是选择分享 ...

  2. 使用Process Explorer查看托管进程的性能记数器

    使用Process Explorer查看托管进程的性能记数器 .net中性能记数器,能让我们监视.net应用程序运行状况,以便我们进一步对程序进行调整. Process Explorer 一个进程管理 ...

  3. 搜集《ASP.NET中常用的26个优化性能方法》

    1. 数据库访问性能优化 a.数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接 ...

  4. asp.net程序性能优化的七个方面

    asp.net程序性能优化的七个方面 一.数据库操作 1.用完马上关闭数据库连接 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器 ...

  5. 【转】从底层了解ASP.Net体系结构

    前言 关于ASP.NET的底层的工作机制,最近园子里讨论的甚是火热.相信很多人都看过Rick Strahl先生的一篇经典之作:A low-level Look at the ASP.NET Archi ...

  6. [转帖]ASP.NET中常用的优化性能的方法

    ASP.NET中常用的优化性能的方法(转贴,Icyer收集整理) 1.       数据库访问性能优化     数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要 ...

  7. 提高 ASP.NET Web 应用性能的 24 种方法和技巧

    那性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置 ...

  8. 常用24个方法有效优化ASP.NET的性能

    1. 数据库访问性能优化数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池(C ...

  9. 10个常用方法有效优化ASP.NET的性能

      1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接 ...

最新文章

  1. POJ 2186 Popular Cows
  2. QT编译发布程序后报错如缺少dll、“应用程序无法正常启动(0xc000007b)”的可能解决方法
  3. 用Visual Studio Code调试nodejs
  4. burpsuite插件的使用
  5. WTM5.0发布,全面支持.net5
  6. 【HTML】中国天气天气插件调用
  7. HTML中的IE条件注释
  8. HTMLTestRunner修改Python3的版本
  9. Linux stat
  10. sqlmap 使用教程
  11. 树莓派 能干啥_大神们都用树莓派做了哪些事
  12. 收到offer不想去,如何优雅拒绝?
  13. 什么是TPS,什么是QPS?
  14. 积分(Integral)
  15. php返回503,网站返回503是什么意思
  16. matlab与卡尔曼滤波pdf,Kalman滤波器理论与应用:基于MATLAB实现 完整pdf高清版[3MB]...
  17. jinja2.exceptions.TemplateNotFound 报错处理
  18. c#控件listview
  19. 锐捷三层交换机配置DHCP
  20. 德国为新能源付出了哪些巨大的代价?

热门文章

  1. php将数组最后一个单元弹出,php array_pop()数组函数将数组最后一个单元弹出(出栈)...
  2. mysql8.0登录不上去怎么回事_搞笑GIF:女朋友非要给我秀一手厨艺,不过这房子是怎么回事!...
  3. 前后端分离的接口规范是什么?
  4. 使用Python,OpenCV进行平滑和模糊
  5. PCL:自定义创建带颜色的点云保存后rgb是一个很大的数,由x y z rgb解包为x y z r g b
  6. PCL基础2:点云赋值
  7. LabVIEW机器视觉系统图像畸变、校准和矫正(基础篇—3)
  8. 不要62 ---数位DP
  9. 机器学习(10)随机森林(预测泰坦尼克号旅客存活率)
  10. python中意外缩进是什么意思_与python中的“意外缩进”怎么办?