gpt4 book ai didi

go - 获取等待写入 channel /从 channel 读取的 goroutines 的数量(用于分析)

转载 作者:IT王子 更新时间:2023-10-29 01:44:36 24 4
gpt4 key购买 nike

为了分析我的应用程序,我想知道有多少 goroutines 正在等待写入 channel 或从 channel 读取;我在 reflect package 中找不到任何相关内容.

我当然可以维护一个明确的计数器,但我希望 golang 运行时知道这一点,所以我尽量避免重新发明轮子。

那么,有没有一种方法可以在不手动维护计数器的情况下做到这一点?

最佳答案

要跟踪整体负载,您可能正在寻找 runtime.NumGoroutine()

https://golang.org/pkg/runtime/#NumGoroutine

虽然它不是刚刚被阻塞的 Go 例程的确切数量,但它应该非常接近它并且不会超过 runtime.NumGoroutine() - GOMAXPROCS

对于跟踪每个 channel 的 Go 例程,您接下来可以执行以下操作:

  1. 使用https://golang.org/pkg/runtime/pprof/#Do用特定 channel 标记例程。
  2. 使用 http/pprof 获取有关当前配置文件的信息并解析输出 - 有关详细信息,请参阅此答案 https://stackoverflow.com/a/38414527/1975086 .或者您可以查看 http/pprof 并了解它如何获取信息,以便您可以在应用程序中以键入的方式获取信息。

关于go - 获取等待写入 channel /从 channel 读取的 goroutines 的数量(用于分析),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46359851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com