最近在排查一个server的性能问题时,用到了golang的火焰图,总结一下步骤;
正常请求性能没问题,并发上千后,响应时间急剧增长;
package main
import (
"log"
"net/http"
_ "net/http/pprof" //引入就好了
"regexp"
)
http.HandleFunc("/",nil)
_ := http.ListenAndServe(":9999", nil)
go tool pprof http://localhost:9999/pprof/profile
收集数据,收集30s后在进入命令行模式后输入quit退出,会生成名为【pprof.二进制名.samples.cpu.00x.pb.gz】的文件,默认放到$HOME/pprof/
下go tool pprof -http=:8080 [步骤5中生成的文件]
解释数据并生成调用栈graph图示,点击view切换成火焰图,如下图: