Pprof
gin pprof middleware
> Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool. The project is written primarily in Go, distributed under the MIT License license, first published in 2016. Key topics include: gin-gonic, gin-middleware, pprof.
pprof
gin pprof middleware
Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool.
Usage
Start using it
Download and install it:
bashgo get github.com/gin-contrib/pprof
Import it in your code:
goimport "github.com/gin-contrib/pprof"
Example
gopackage main import ( "github.com/gin-contrib/pprof" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() pprof.Register(router) router.Run(":8080") }
change default path prefix
gofunc main() { router := gin.Default() // default is "debug/pprof" pprof.Register(router, "dev/pprof") router.Run(":8080") }
custom router group
gopackage main import ( "net/http" "github.com/gin-contrib/pprof" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() debugGroup := router.Group("/debug", func(c *gin.Context) { if c.Request.Header.Get("Authorization") != "foobar" { c.AbortWithStatus(http.StatusForbidden) return } c.Next() }) pprof.RouteRegister(debugGroup, "pprof") router.Run(":8080") }
Use the pprof tool
Then use the pprof tool to look at the heap profile:
bashgo tool pprof http://localhost:8080/debug/pprof/heap
Or to look at a 30-second CPU profile:
bashgo tool pprof http://localhost:8080/debug/pprof/profile?seconds=30
Or to look at the goroutine blocking profile, after calling runtime.SetBlockProfileRate in your program:
bashgo tool pprof http://localhost:8080/debug/pprof/block
Or to collect a 5-second execution trace:
bashwget http://localhost:8080/debug/pprof/trace?seconds=5
Download the pprof profile data:
bashcurl -v -H "Authorization: foobar" -o profile.pb.gz \ http://localhost:8080/debug/pprof/profile?seconds=60 go tool pprof -http=:8099 profile.pb.gz
Contributors
Showing top 11 contributors by commit count.
