问题标签 [perfview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net-core - perfview 线程时间非活动含义
我在 linux 上的 dotnet aspnetcore (3.1) 服务上遇到线程池饥饿问题的周期性峰值。值得注意的是,由于某种原因,在 Windows 上完全没有这个问题。
我使用 dotnet-trace 捕获跟踪并得出结论,我确实捕获了感兴趣的区域,因为事件包含多个线程启动事件。
现在我正在努力理解是什么阻塞了我的几十个线程,从而导致线程池创建了另外一百个。
我已经阅读了多个文档和文章,但仍然无法完全理解线程非活动和活动之间有什么区别。在线程时间视图中,我可以看到在非活动节点下方具有堆栈的节点。下面的例子。具体来说,该节点位于非活动节点下方。怎么解释?如果非活动意味着线程没有做任何事情的时间,为什么我会在给定时间区域内的时间桶中看到许多样本?这是否意味着这个线程实际上被阻塞在这个堆栈中?
etw - 如何强制 PerfView 从某些特定但不是所有进程收集 ETW 事件?
我知道有一个命令可以从一个进程收集 ETW 事件:“perfview collect -OnlyProviders:”*:@ProcessNameFilter=my.process.exe“”。但是如何从某些特定进程中收集 ETW 事件呢?我们使用逗号和分号来指定两个或更多进程,但它不起作用。
.net - 垃圾收集期间的 PerfView 和高 CPU 使用率
在过去的几天里,我一直在使用 PerfView 在我们的一台生产 Web 服务器(.net 4.7.2 和 ASP.NET - MVC 5.2.4)上寻找广泛的大对象堆分配并监控 GC 性能,我使用了“ GC Collect Only”、“GC Only”、“ETW .NET Alloc”选项以及可能的其他一些选项。
然而,在跟踪会话期间和之后,CPU 使用率非常高,长达 10 秒,其中所有 24 个内核的利用率几乎为 100%。在 PerfView 会话停止并且问题仍然存在后,我执行了“issreset”并最终重新启动了网络服务器。但这并没有帮助,在加入集群 15 到 20 分钟后,服务器开始再次看到高 CPU 利用率。此时,我在 CPU 使用率较高时创建了一些进程的转储,并使用 DebugDiag 对其进行分析,这表明 GC 正在运行。
所以我的问题是,什么会导致应用程序以这种方式运行?上周,该网站在该服务器上运行平稳,另外 2 个在过去几天没有出现问题的网络服务器也运行良好。是否存在某种在重启后仍然存在的挥之不去的跟踪会话?
.net - 如何使用 dotnet-trace 获取 BLOCKED_TIME 指标
让我们考虑一个简单的案例——我在 Windows 上运行一个 .net5 控制台应用程序。如果我通过PerfView /threadTime collect像这里描述的那样获取跟踪,那么我可以在Thread Time Stacks选项卡中看到BLOCKED_TIME指标。我应该如何运行dotnet-trace命令以在Perfview中获得相同的指标?我尝试过使用详细程度,但到目前为止还没有运气。