0

我在 linux 上的 dotnet aspnetcore (3.1) 服务上遇到线程池饥饿问题的周期性峰值。值得注意的是,由于某种原因,在 Windows 上完全没有这个问题。

我使用 dotnet-trace 捕获跟踪并得出结论,我确实捕获了感兴趣的区域,因为事件包含多个线程启动事件。

现在我正在努力理解是什么阻塞了我的几十个线程,从而导致线程池创建了另外一百个。

我已经阅读了多个文档和文章,但仍然无法完全理解线程非活动和活动之间有什么区别。在线程时间视图中,我可以看到在非活动节点下方具有堆栈的节点。下面的例子。具体来说,该节点位于非活动节点下方。怎么解释?如果非活动意味着线程没有做任何事情的时间,为什么我会在给定时间区域内的时间桶中看到许多样本?这是否意味着这个线程实际上被阻塞在这个堆栈中?

在此处输入图像描述

4

0 回答 0