.NET必知的EventCounters机能指标监督器详解
在.NET我们对付机能指标监控,着实常见的有两个要领,一个是CLI器材dotnet-counters而另一个是代码级此外EventListener. 行使dotnet-counters dotnet-counters是一本机能指标监督器材,用于姑且运行状态监督和低级机能观测。它可以调查通过 API宣布的机能计数器值。譬喻,可以快速监督 CPU 行使环境或 .NET Core 应用措施中激发的非常率,以相识在行使 PerfView 或 dotnet-trace 深入观测更严峻的机能题目之前是否有任何可疑操纵。 -- 摘自 呼吁 安装dotnet-counters CLI器材,可通过如下呼吁: dotnet tool install --global dotnet-counters 更新呼吁如下所示: dotnet tool update dotnet-counters --global 安装完器材之后,我们可以举办查察可监督的历程: dotnet-counters ps 12268 dotnet C:Program Filesdotnetdotnet.exe 16324 dotnet C:Program Filesdotnetdotnet.exe 获取到历程ID后,我们可以通过如下呼吁举办监督: dotnet-counters monitor -p 12268 监督特定的EventSources,可以提供以一个空格脱离开的EventSources列表,如下所示: dotnet-counters monitor -p 12268 System.Runtime MyEventSource 在默认的环境下,我们对付EventSource监督时,它捕捉的是全部的计数器。假如我们想单独跟踪某几个计数器那么可通过如下方法举办指定: dotnet-counters monitor -p 12268 System.Runtime[cpu-usage,gc-heap-size] 对付监督器我们可以配置革新频率,可以通过--refresh-interval参数来配置: dotnet-counters monitor -p 12268 --refresh-interval 3 System.Runtime[cpu-usage,gc-heap-size] 代码中的EventCounters EventListener提供了历程内(In-Process)订阅和斲丧日记变乱的方法,EventListener可以吸取到来自EventSource分发的日记变乱。 这些变乱内在盖了GC、JIT、ThreadPool和interop的举动。 建设EventListener 在下面我们举办重写OnEventSourceCreated要领,该要了解在挪用时吸取一个EventSource工具,我们可以通过EventSource工具的Name属性去筛选我们感乐趣的日记变乱,筛选后我们必要表现的挪用EnableEvents要领向感乐趣的日记变乱提倡订阅。 internal sealed class MyEventListener : EventListener { protected override void OnEventSourceCreated(EventSource eventSource) { if (eventSource.Name.Equals("Microsoft-Windows-DotNETRuntime")) { EnableEvents(eventSource, EventLevel.Verbose, (EventKeywords)(-1)); } } } 变乱斲丧 接下来我们必要举办重写OnEventWritten,关于日记变乱相干的信息会被封装成一个EventWrittenEventArgs工具,我们不只可以通过它获取当前日记变乱的全部信息,并且我们还可以举办获取到EventSource工具。Payload包括了差异属性的值ReadOnlyCollection<object>, 而PayLoadNames ReadOnlyCollection<object>中包括了差异的属性名称,我们此刻可以通过如下方法举办获取这些属性: protected override void OnEventWritten(EventWrittenEventArgs eventData) { Console.WriteLine($"ThreadID = {eventData.OSThreadId} ID = {eventData.EventId} Name = {eventData.EventName}"); for (int i = 0; i < eventData.Payload.Count; i++) { string payloadString = eventData.Payload[i]?.ToString() ?? string.Empty; Console.WriteLine($"tName = "{eventData.PayloadNames[i]}" Value = "{payloadString}""); } Console.WriteLine("n"); } 参考 https://stackoverflow.com/questions/61081063/get-total-number-of-allocations-in-c-sharp 到此这篇关于.NET必知的EventCounters机能指标监督器详解的文章就先容到这了,更多相干.NET机能指标监督器内容请搜刮剧本之家早年的文章或继承赏识下面的相干文章但愿各人往后多多支持剧本之家! (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |