为了账号安全,请及时绑定邮箱和手机立即绑定

如何启动一个新的http服务器或使用现有的http服务器进行pprof?

如何启动一个新的http服务器或使用现有的http服务器进行pprof?

Go
精慕HU 2022-08-01 18:53:21
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


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 249 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号