Application Insights Profiler和“AWAIT_TIME”

时间:2017-10-03 19:23:20

标签: c# azure asynchronous profiling azure-application-insights

实际上到底是什么?实际调用需要8000毫秒,但实际的DB调用只需要<100毫秒。这是负载测试的结果,该测试在Azure中的Web应用程序上达到约100 req / s的峰值。我尝试了扩展和扩展,但性能仍然相同。呼叫是异步完成的,在早期阶段,分析器对于那种请求并不是很准确,但现在是2017年...

那么,谁能告诉我它在哪里或者在等什么?在探查器跟踪中没有其他热路径或长调用,但是,整个请求中还有其他DB和REST调用,它们也是异步完成的(并且等待而不是.Result完成)。

也没有复杂的方法,但主要是外部异步调用。线程池耗尽?我们正在使用ASPNET.CORE和netframework451

非常感谢任何见解。

profiler image

1 个答案:

答案 0 :(得分:0)

在我看来,这是对的。我猜你可能不明白等待。

来自azure article

等待(AWAIT_TIME)

AWAIT_TIME表示代码正在等待另一个任务完成。这通常发生在C#&#39; await&#39;声明。当代码执行C#&#39; await&#39;时,线程展开并将控制返回给线程池,并且没有阻塞的线程等待等待&#39; await&#39;完成。 然而,从逻辑上讲,执行等待的线程被阻止了#39;等待操作完成。 AWAIT_TIME表示等待任务完成的阻止时间。

所以你的代码仍然被阻塞等待异步调用完成,但是会释放线程做其他事情。