使用pprof进行性能分析

说明

自go的1.10版本后,就不再需要第三方的工具了(例如go-pprof和google/pprof),直接用官方的cli工具即可。唯一需要安装的是Graphviz,安装方法见官网(windows安装完成后需要在有管理员权限的cmd窗口输入dot -c注册插件)。

使用方式一:查看报告

  1. Web项目的集成办法:
    1. 项目使用默认的http.DefaultServeMux,则直接import _ “net/http/pprof”
    2. 项目使用自定义的Mux,先import net/http/pprof,再注册如下路由
      • r.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)
  2. 非Web项目的集成办法:
    1. 方法1:先import "runtime/pprof",然后在需要的地方pprof.StartCPUProfile(f)和pprof.StopCPUProfile(),将报告日志写入文件句柄f
    2. 方法2:先import _ "net/http/pprof",再开启一个线程来监听:log.Println(http.ListenAndServe("0.0.0.0:6060", nil))

对于Web项目,查看报告直接访问项目地址/debug/pprof/就可以了,对于非Web项目,则使用go tool pprof 报告日志

使用方式二:查看调用关系图和火焰图

在方式一的基础上,输入go tool pprof -http :8080 localhost:6060
然后访问localhost:8080 即可。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!