Application Insights:分析器跟踪中的 "Unmanaged async"

Application Insights: "Unmanaged async" in profiler trace

我们的一个网络应用程序实例的 CPU 负载很高,我正在尝试调查原因。 AI中记录了一些个人资料痕迹。它们都包含一个很长的 "Unmanaged Async" 事件。

这个"Unmanaged Async"是什么意思?

.Net 框架发出 ETW 事件并在线程之间传递 activity id,以便可以跨线程跟踪异步调用。非托管代码(本机代码)和一些旧样式的异步代码缺少这些事件和 activity id,因此探查器无法跟踪哪个线程是 运行 代码以及什么代码是 运行。这在调用堆栈中被标记为 'unmanaged async'。如果您下载 ETW 文件,您可以使用 perfview 更深入地了解正在发生的事情。