工具方法: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