如何确定asp.net核心应用程序是否正在遭受线程池饥饿

时间:2019-06-07 23:37:19

标签: asp.net-core .net-core

我们今天在api中遇到了这些奇怪的问题,这些问题是由线程池饥饿引起的。我们花了很多时间来解决这个问题。

所以我在想,这是什么方法?我知道我可以使用perfview之类的工具,但是这些错误通常只发生在prod中,因此很难在事后转储perf测试以对其进行分析。

我知道一些电话,例如: ThreadPool.GetAvailableThreads(out workers, out ports); 但是,我返回的结果只是一个任意高的数字,例如32766。实际上(据我们了解),问题通常不是最大线程大小,而是.Net限制了新线程数量的事实。线程,它将每秒旋转。 所以我对测量感兴趣:
-我的应用程序当前正在使用多少个工作者线程?
-平均一秒钟要花多少时间等待可用线程?

我希望有一些Threadpool api或其他类型的api可以获取这些指标的“实时”指标,以便我可以使用Prometheus或类似方法向我们的监控系统报告。

这只是在黑暗中的镜头,任何指针都值得赞赏!

0 个答案:

没有答案