.NET 中的已知 EventCounters

.NET 运行时和库实现并发布几个 EventCounters,可用于识别和诊断各种性能问题。 通过本文,你可了解可用于监视这些计数器的提供程序及其描述。 如果要使用 .NET 较新的 System.Diagnostics.Metrics API,请转而查看已知的指标参考

System.Runtime 计数器

以下计数器作为 .NET 运行时 (CoreCLR) 的一部分发布,并在 RuntimeEventSource.cs 中进行维护。

计数器 说明 首次提供于
% Time in GC since last GC (time-in-gc) 自上次 GC 以来 GC 的时间百分比 .NET Core 3.1
Allocation Rate (alloc-rate) 每个更新间隔分配的字节数 .NET Core 3.1
CPU Usage (cpu-usage) 相对于所有系统 CPU 资源进程的 CPU 使用率百分比 .NET Core 3.1
Exception Count (exception-count) 已发生的异常数 .NET Core 3.1
GC Heap Size (gc-heap-size) 认为要分配的兆字节数,基于 GC.GetTotalMemory(Boolean) .NET Core 3.1
Gen 0 GC Count (gen-0-gc-count) 每个更新间隔发生的第 0 代 GC 次数 .NET Core 3.1
Gen 0 Size (gen-0-size) 第 0 代 GC 的字节数 .NET Core 3.1
Gen 1 GC Count (gen-1-gc-count) 每个更新间隔发生的第 1 代 GC 次数 .NET Core 3.1
Gen 1 Size (gen-1-size) 第 1 代 GC 的字节数 .NET Core 3.1
Gen 2 GC Count (gen-2-gc-count) 每个更新间隔发生的第 2 代 GC 次数 .NET Core 3.1
Gen 2 Size (gen-2-size) 第 2 代 GC 的字节数 .NET Core 3.1
LOH Size (loh-size) 大型对象堆的字节数 .NET Core 3.1
POH Size (poh-size) 已固定对象堆的字节数(在 .NET 5 及更高版本中可用) .NET Core 3.1
GC Fragmentation (gc-fragmentation) GC 堆碎片(在 .NET 5 及更高版本中可用) .NET Core 3.1
Monitor Lock Contention Count (monitor-lock-contention-count) 尝试锁定监视器时出现争用的次数,基于 Monitor.LockContentionCount .NET Core 3.1
Number of Active Timers (active-timer-count) 当前活动的 Timer 实例的计数,基于 Timer.ActiveCount .NET Core 3.1
Number of Assemblies Loaded (assembly-count) 在某个时间点加载到进程中的 Assembly 实例的计数 .NET Core 3.1
ThreadPool Completed Work Item Count (threadpool-completed-items-count) 迄今为止 ThreadPool 中已处理的工作项数 .NET Core 3.1
ThreadPool Queue Length (threadpool-queue-length) ThreadPool 中当前已加入处理队列的工作项数 .NET Core 3.1
ThreadPool Thread Count (threadpool-thread-count) ThreadPool 中当前存在的线程池线程数,基于 ThreadPool.ThreadCount .NET Core 3.1
Working Set (working-set) 在基于 Environment.WorkingSet 的某个时间点映射到进程上下文的物理内存的兆字节数。 .NET Core 3.1
IL Bytes Jitted (il-bytes-jitted) JIT 编译的 IL 的总大小,以字节为单位 .NET 5
Methods Jitted Count (methods-jitted-count) JIT 编译的方法数 .NET 5
GC Committed Bytes (gc-committed) 由 GC 所提交的字节数 .NET 6

Microsoft.AspNetCore.Hosting 计数器

以下计数器作为 ASP.NET Core 的一部分发布,并在 HostingEventSource.cs 中进行维护。

计数器 说明 首次提供于
Current Requests (current-requests) 已启动但尚未停止的请求总数 .NET Core 3.1
Failed Requests (failed-requests) 应用生命周期内发生的失败请求总数 .NET Core 3.1
Request Rate (requests-per-second) 每个更新间隔发生的请求数 .NET Core 3.1
Total Requests (total-requests) 应用生命周期内发生的请求总数 .NET Core 3.1

Microsoft.AspNetCore.Http.Connections 计数器

以下计数器作为 ASP.NET Core SignalR 的一部分发布,并在 HttpConnectionsEventSource.cs 中进行维护。

计数器 说明 首次提供于
Average Connection Duration (connections-duration) 连接的平均持续时间(毫秒) .NET Core 3.1
Current Connections (current-connections) 已启动但尚未停止的活动连接数 .NET Core 3.1
Total Connections Started (connections-started) 已启动的连接总数 .NET Core 3.1
Total Connections Stopped (connections-stopped) 已停止的连接总数 .NET Core 3.1
Total Connections Timed Out (connections-timed-out) 已超时的连接总数 .NET Core 3.1

Microsoft-AspNetCore-Server-Kestrel 计数器

以下计数器作为 ASP.NET Core Kestrel Web 服务器的一部分发布,并在 KestrelEventSource.cs 中进行维护。

计数器 说明 首次提供于
Connection Queue Length (connection-queue-length) 连接队列的当前长度 .NET 5
Connection Rate (connections-per-second) 每个更新间隔与 Web 服务器的连接数 .NET 5
Current Connections (current-connections) 到 Web 服务器的当前活动连接数 .NET 5
Current TLS Handshakes (current-tls-handshakes) 当前 TLS 握手数 .NET 5
Current Upgraded Requests (WebSockets) (current-upgraded-requests) 当前升级请求数 (WebSockets) .NET 5
Failed TLS Handshakes (failed-tls-handshakes) 失败的 TLS 握手总数 .NET 5
Request Queue Length (request-queue-length) 请求队列的当前长度 .NET 5
TLS Handshake Rate (tls-handshakes-per-second) 每个更新间隔的 TLS 握手数 .NET 5
Total Connections (total-connections) 到 Web 服务器的连接总数 .NET 5
Total TLS Handshakes (total-tls-handshakes) Web 服务器的 TLS 握手总数 .NET 5

System.Net.Http 计数器

以下计数器由 HTTP 堆栈发布。

计数器 说明 首次提供于
Requests Started (requests-started) 自进程启动以来启动的请求数 .NET 5
Requests Started Rate (requests-started-rate) 每个更新间隔启动的请求数 .NET 5
Requests Failed (requests-failed) 自进程启动以来失败的请求数 .NET 5
Requests Failed Rate (requests-failed-rate) 每个更新间隔的失败请求数 .NET 5
Current Requests (current-requests) 当前已启动但尚未完成或失败的活动 HTTP 请求数 .NET 5
Current HTTP 1.1 Connections (http11-connections-current-total) 当前已启动但尚未完成或失败的 HTTP 1.1 连接数 .NET 5
Current HTTP 2.0 Connections (http20-connections-current-total) 当前已启动但尚未完成或失败的 HTTP 2.0 连接数 .NET 5
Current HTTP 3.0 Connections (http30-connections-current-total) 当前已启动但尚未完成或失败的 HTTP 3.0 连接数 .NET 7
HTTP 1.1 Requests Queue Duration (http11-requests-queue-duration) HTTP 1.1 请求在请求队列中花费的平均持续时间 .NET 5
HTTP 2.0 Requests Queue Duration (http20-requests-queue-duration) HTTP 2.0 请求在请求队列中花费的平均持续时间 .NET 5
HTTP 3.0 Requests Queue Duration (http30-requests-queue-duration) HTTP 3.0 请求在请求队列中花费的平均持续时间 .NET 7

System.Net.NameResolution 计数器

以下计数器跟踪与 DNS 查找相关的指标。

计数器 说明 首次提供于
DNS Lookups Requested (dns-lookups-requested) 自进程启动以来请求的 DNS 查找数 .NET 5
Average DNS Lookup Duration (dns-lookups-duration) DNS 查找所用的平均时间 .NET 5
Current DNS Lookups (current-dns-lookups) 当前已启动但尚未完成或失败的 DNS 查找 .NET 6

System.Net.Security 计数器

以下计数器跟踪与传输层安全协议相关的指标。

计数器 说明 首次提供于
TLS handshakes completed (tls-handshake-rate) 每个更新间隔完成的 TLS 握手数 .NET 5
Total TLS handshakes completed (total-tls-handshakes) 自进程启动以来完成的 TLS 握手总数 .NET 5
Current TLS handshakes (current-tls-handshakes) 当前已启动但尚未完成的 TLS 握手数 .NET 5
Total TLS handshakes failed (failed-tls-handshakes) 自进程启动以来失败的 TLS 握手总数 .NET 5
All TLS Sessions Active (all-tls-sessions-open) 任何版本的活动 TLS 会话数 .NET 5
TLS 1.0 Sessions Active (tls10-sessions-open) 活动的 TLS 1.0 会话数 .NET 5
TLS 1.1 Sessions Active (tls11-sessions-open) 活动的 TLS 1.1 会话数 .NET 5
TLS 1.2 Sessions Active (tls12-sessions-open) 活动的 TLS 1.2 会话数 .NET 5
TLS 1.3 Sessions Active (tls13-sessions-open) 活动的 TLS 1.3 会话数 .NET 5
TLS Handshake Duration (all-tls-handshake-duration) 所有 TLS 握手的平均持续时间 .NET 5
TLS 1.0 Handshake Duration (tls10-handshake-duration) TLS 1.0 握手的平均持续时间 .NET 5
TLS 1.1 Handshake Duration (tls11-handshake-duration) TLS 1.1 握手的平均持续时间 .NET 5
TLS 1.2 Handshake Duration (tls12-handshake-duration) TLS 1.2 握手的平均持续时间 .NET 5
TLS 1.3 Handshake Duration (tls13-handshake-duration) TLS 1.3 握手的平均持续时间 .NET 5

System.Net.Sockets 计数器

以下计数器跟踪与 Socket 相关的指标。

计数器 说明 首次提供于
Outgoing Connections Established (outgoing-connections-established) 自进程启动以来建立的传出连接总数 .NET 5
Incoming Connections Established (incoming-connections-established) 自进程启动以来建立的传入连接总数 .NET 5
Current Outgoing Connect Attempts (current-outgoing-connect-attempts) 当前已启动但尚未完成或失败的传出连接尝试次数 .NET 7
Bytes Received (bytes-received) 自进程启动以来收到的字节总数 .NET 5
Bytes Sent (bytes-sent) 自进程启动以来发送的字节总数 .NET 5
Datagrams Received (datagrams-received) 自流程启动以来收到的数据报总数 .NET 5
Datagrams Sent (datagrams-sent) 自流程启动以来发送的数据报总数 .NET 5