profiler - 线程视图在性能/cpu 分析器中有何用处?
问题描述
在我分析 ASP.NET Core 应用程序后,JetBrain 的 dotTrace工具默认打开All Calls
选项卡并显示线程列表。
你能澄清我的一些问题吗?
在我的分析会话期间,我向 Web 应用程序发送了大约 10 万个请求。这些线程(除了
Main
一些系统线程,如Finalizer
线程)是线程池用来根据下图处理所有这些请求的唯一线程吗?理想情况下,我希望了解占用大量 CPU 的函数的详细信息(即分析会话中最热门的方法),所以我一直想知道这个线程视图实际上有什么帮助?
您是否认为线程池中可能有更多线程可以被使用并返回到线程池,但是分析器只能“捕获”特定线程池线程的信息,因为这些线程池线程是在那段时间执行?我这样说是因为对于 ~100K 请求,这里显示的线程数似乎更少,但我可能是错的。(可能是基于执行的并发请求数?)
解决方案
当您在应用程序中使用真正的线程时,线程视图很有用。例如,在 WPF 中,主线程仅用于调度程序,而您的自定义线程用于后台工作。
在您的情况下,您仍然可以扩展调度以查看内部执行的内容。您还可以使用跟踪模式查看池工作人员内的请求数。
显示在您的分析记录期间实际使用的所有线程,每个线程将执行大量请求
对于这种用途,我更喜欢 Timeline 模式,因此您可以过滤所有请求并查看执行的所有线程。
推荐阅读
- python - 我们如何找到特定数字的个位?
- cassandra - Cassandra v3.0.9 引导程序失败
- r - 如何生成一个表示班级中男性学生比例的列?
- apache-nifi - 有没有办法在 NIFI 中实现“mergeXml”处理器
- mysql - 具有最近日期的 INNER JOIN ID
- javascript - 对象的 float 属性返回不一致的值
- android - 将图像从 android(retrofit) 上传到 django 的问题
- c++ - MFC:序列化指向字节数组的指针?
- google-bigquery - 在 BigQuery 中生成一列随机日期
- javascript - 在 Vuejs 中使用 v-for 渲染列表?