golang 提供的 pprof 工具可以很方便的分析性能上的问题比如cpu的使用情况,堆内存分配,goroutine 死锁情况等
昨天使用了net/http/pprof包进行问题分析,所以简单记录一下
net/http/pprof包的使用非常简单
1、代码引入pprof
package mainimport ("fmt""github.com/valyala/fasthttp""log""net/http"_ "net/http/pprof""runtime""time"
)func index(ctx *fasthttp.RequestCtx) {time.Sleep(200 * time.Millisecond)fmt.Fprintf(ctx.Response.BodyWriter(), "aaa")
}func main() {runtime.GOMAXPROCS(4)log.Println("fasthttp")m := func(ctx *fasthttp.RequestCtx) {switch string(ctx.Path()) {case "/index":index(ctx)default:ctx.Error("not found", fasthttp.StatusNotFound)}}go func() {http.ListenAndServe("0.0.0.0:8899", nil)}()fasthttp.ListenAndServe(":8083", m)}
以上代码import 了net/http/pprof包进行包初始化,main 函