工具方法:Golang Profiling: 关于 pprof

优采云 发布时间: 2022-10-11 08:13

  工具方法:Golang Profiling: 关于 pprof

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

  有关在后续章节中详细剖析的进一步说明,请参阅 []。

  如果您没有使用默认的 DefaultServeMux 方法,则需要手动将端点链接到您的多路复用器。例如,对于杜松子酒,它可能如下所示:

  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 />

  一般应用

  如果你的应用不是持久化的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人工客服


线