Golang使用pprof优化性能 发表于 2021-03-05 | 分类于 Golang 使用pprof包来为golang程序检查性能损耗点 进程启动/退出时输出pprof文件 123456789101112131415161718192021222324252627 func StartProfile() { { // 信号处理 sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) go func() { <-sigs pprof.StopCPUProfile() os.Exit(0) }() } { // 启动pprof pwd, err := os.Getwd() if err != nil { panic(err) } fileName := filepath.Join(pwd, "pprof.file") f, err := os.Create(fileName) if err != nil { panic(err) } if err := pprof.StartCPUProfile(f); err != nil { panic(err) } } } 使用HTTP包输出pprof文件 123import _ "net/http/pprof" go http.ListenAndServe("0.0.0.0:8000", nil) 针对自定义Mux提供手动添加路由: 12345r.HandleFunc("/debug/pprof/", pprof.Index) r.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline) r.HandleFunc("/debug/pprof/profile", pprof.Profile) r.HandleFunc("/debug/pprof/symbol", pprof.Symbol) r.HandleFunc("/debug/pprof/trace", pprof.Trace) 生成svg图 安装 graphviz 1$ apt install -y graphviz 生成SVG图 12$ go tool pprof [binary] pprof.file $ svg