探查器是不是会错过花在被阻止呼叫上的时间?
Posted
技术标签:
【中文标题】探查器是不是会错过花在被阻止呼叫上的时间?【英文标题】:Could profiler be missing time spent on blocked call?探查器是否会错过花在被阻止呼叫上的时间? 【发布时间】:2014-08-19 00:51:46 【问题描述】:我正在使用 Visual Studio 2013 分析器,使用采样模式分析应用程序。有时,应用程序使用 .net 远程处理对远程进程进行阻塞调用。有时这个调用会等待很长时间才能得到响应。例如,在 30 秒的时间间隔内,它可能会花费 10 秒等待响应。我希望它会显示为热点,因为对远程进程的调用将出现在许多样本的堆栈中。但是,事实并非如此。在调用方法上花费的时间可以忽略不计。有解释吗?
【问题讨论】:
【参考方案1】:在采样模式下,该分析器不会在线程被阻塞时进行采样。 因此它对 I/O 视而不见,即使它需要 99.9% 的时间。 (他们称之为“CPU 采样”,试图让它听起来像一个功能。)
在检测模式下,它通过计时器而不是样本工作,因此它包括阻塞时间,但它只提供函数级分辨率。
this question 的第二个回答列出了所有这些问题。
【讨论】:
【参考方案2】:热点与 CPU 利用率有关,在这种情况下阻塞的线程不符合条件,所以您看到的是正确的。
【讨论】:
以上是关于探查器是不是会错过花在被阻止呼叫上的时间?的主要内容,如果未能解决你的问题,请参考以下文章
设置“期望大小:0”是不是会阻止集群自动缩放器扩展托管节点组?
使用会话管理器连接到 EC2 上的 django 项目突然被阻止