介绍
代码的性能监控,包含: net/http/pprof
和runtime/pprof
,其中net/http/pprof
可用于 web服务器监控 和 服务进程的监听。如果要监听应用程序,则需要用到runtime/pprof
。
服务监听
引入net/http/pprof
,一般通过启动goroutine启端口进行监听
- 开启监听
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
- 监听方式
http://localhost:port/debug/pprof/
也可以通过命令行方式
go tool pprof http://localhost/debug/pprof/profile
应用程序监听
应用程序,比如计算fabonacci数列 监听,需要用runtime/pprof
包
- 示例代码
var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
func main() {
flag.Parse()
if *cpuprofile != "" {
f, err := os.Create(*cpuprofile)
if err != nil {
log.Fatal(err)
}
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
}
- 启动监听方式:在应用运行命令后增加
--cpuprofile
,如下
//cpu的信旋记录到XXX.prof
myproject --cpuprofile=fabonacci.prof
网友评论