【IT168 技术文档】
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.NET 和 ASP.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 Active、State Server Sessions Abandoned 和 State Server Sessions Timed Out 的累积值。该计数器只用于运行状态服务器服务 (aspnet_state) 的计算机上。
Worker Process Restarts :在服务器计算机上已重新启动工作进程的次数。如果工作进程意外失败或者有意回收,则可以重新启动该工作进程。当此计数器出现意外增加时,应该尽早调查原因。
Worker Process Running :服务器计算机上运行的工作进程的数量。