插入关键字 文章采集器 Golang Profiling: 关于 pprof

优采云 发布时间: 2022-06-19 01:32

  插入关键字 文章采集器 Golang Profiling: 关于 pprof

  go tool pprof http://localhost:8080/debug/pprof/heap<br />> top<br />...<br />> exit<br />

  关于进一步的说明要在后续章节中详细剖析,详见 []。

  如果你没有采用默认的 DefaultServeMux 方式,那就需要手动地链接端点到你的 mux。例如对于 gin 来说,可能会是这样:

  r := gin.Default()<br />r.GET("/debug/pprof/allocs", WrapH(pprof.Handler("allocs")))<br />r.GET("/debug/pprof/block", WrapH(pprof.Handler("block")))<br />r.GET("/debug/pprof/goroutine", WrapH(pprof.Handler("goroutine")))<br />r.GET("/debug/pprof/heap", WrapH(pprof.Handler("heap")))<br />r.GET("/debug/pprof/mutex", WrapH(pprof.Handler("mutex")))<br />r.GET("/debug/pprof/threadcreate", WrapH(pprof.Handler("threadcreate")))<br />r.Run(":8080")<br /><br />func WrapH(h http.Handler) gin.HandlerFunc {<br />    return func(c *gin.Context) {<br />        h.ServeHTTP(c.Writer, c.Request)<br />    }<br />}<br />

  一般应用程序

  如果你的 app 并非持续性 web 服务,那么也可以通过 runtime/pprof 包来手工插入 prof 专用代码到应用程序中,然后在运行结束后拿着产生的 cpu.prof 或 mem.prof 等数据收集文件到 pprof 中进行分析。

  借助于 pkg/profile

  这里有一个简单的应用程序:

<p>package main<br /><br />import (<br />    "fmt"<br />    "github.com/pkg/profile"<br />)<br /><br />func main(){<br />    defer profile.Start(profile.ProfilePath(".")).Stop()<br />    a()<br />}<br /><br />func a(){<br />    for i:=0;i

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线