pprof包文档说通常,导入包只是为了防止注册其 HTTP 处理程序的副作用。处理的路径都以 /debug/pprof/ 开头。文档说,如果你已经运行了一个http服务器,你不需要启动另一个,但如果你没有使用DefaultServeMux,你将不得不向你正在使用的mux注册处理程序。难道我不应该总是使用一个单独的端口来表示 pprof 吗?是否可以使用我用于普罗米修斯指标的相同端口?
1 回答
MM们
TA贡献1886条经验 获得超2个赞
net/http/pprof是一个方便的包。它总是在 上注册处理程序,因为它是一个全局变量,它实际上可以做到这一点。DefaultServeMuxDefaultServeMux
如果你想在其他一些地方提供pprof结果,那真的没什么;它所需要的只是调用一个,然后睡觉,或者调用一个对象。你可以看看net/http/pprof的来源,看看它是如何做到的。ServeMuxruntime/pprof.StartCPUProfile(w)http.ResponseWriterp.WriteTo(w, debug)runtime/pprof.Profile
在稍微好一点的宇宙中,将有一个可以在任何地方使用的函数,您将能够导入它而无需隐式注册任何内容,并且将有另一个包(例如)除了调用它之外什么都不做。然而,我们并不生活在那个宇宙中。net/http/pprofRegisterHandlers(*http.ServeMux)net/http/pprof/sugarpprof.RegisterHandlers(http.DefaultServeMux)init
- 1 回答
- 0 关注
- 249 浏览
添加回答
举报
0/150
提交
取消
