golang pprof 使用简介

栏目: Go · 发布时间: 4年前

内容简介:golang 的 pprof 是性能分析的神器,包括交互命令行和 UI 图像化的分析。主要来看看 pprof 支持哪些功能,以及我们如何用他来分析性能。使用 pprof 需要在代码里倒入如下的包如果没有跑http server,比如说跑了一个进程,那么需要另起一个 goroutines 跑一下 http server

golang 的 pprof 是性能分析的神器,包括交互命令行和 UI 图像化的分析。主要来看看 pprof 支持哪些功能,以及我们如何用他来分析性能。

pprof 使用

使用 pprof 需要在代码里倒入如下的包

import _ "net/http/pprof"

如果没有跑http server,比如说跑了一个进程,那么需要另起一个 goroutines 跑一下 http server

go func() {
    log.Println(http.ListenAndServe("localhost:6060", nil))
}()

使用交互式命令

  1. 查看堆栈调用信息
go tool pprof http://localhost:6060/debug/pprof/heap
  1. 查看 30 秒内的 CPU 信息
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30
  1. 查看 goroutine 阻塞
go tool pprof http://localhost:6060/debug/pprof/block
  1. 收集 5 秒内的执行路径
go tool pprof http://localhost:6060/debug/pprof/trace?seconds=5
  1. 争用互斥持有者的堆栈跟踪
go tool pprof http://localhost:6060/debug/pprof/mutex

UI web 界面

相比较于交互式命令行,这个UI分析 工具 就比较强大了,包括各种流程图式的分析,还有火焰图。但是会麻烦一点,首先我们得导出文件,下面例子是查看堆栈调用信息,其他相关信息需要调相关接口。

curl -sK -v http://localhost:6060/debug/pprof/heap > heap.out

然后用 go tool 工具 使用该导出文件起一个服务,会自动跳到 UI 界面。这个需要服务器安装 graphviz

go tool pprof -http=:8080 heap.out

弹出来的 UI 如下。

golang pprof 使用简介

UI 图

UI VIEW

UI VIEW 提供多种查看模式,我们可以从下图看到共有 6 种模式。这里主要需要两个参数的意义(

flat 表示堆栈中当前层函数的内存, cum 表示堆栈中直到当前函数所累积的内存)

  1. Top:类似于 linux top 那种形式。从高到底排序
  2. Graph:默认弹出来的就是该模式,也就是上一个图的那种带有调用关系的图。
  3. Flame Graph:pprof 火焰图。
  4. Peek:类似于 Top 也是从高到底的排序。
  5. Source:和交互命令式的那种一样,带有源码标注。
  6. Disassemble:显示所有的总量。
golang pprof 使用简介

VIEW

UI SAMPLE

UI SAMPLE 为 VIEW 提供 4 种查询模式。

  1. alloc_objects:已分配的对象总量(不管是否已释放)
  2. alloc_space:已分配的内存总量(不管是否已释放)
  3. inuse_objects: 已分配但尚未释放的对象数量
  4. inuse_sapce:已分配但尚未释放的内存数量
golang pprof 使用简介

SAMPLE

UI REFINE

UI REFINE 主要是依据右边的 Search regexp 输入框对 SAMPLE 做一些结果筛选分析,从名字我们可以看到是支持正则的。

golang pprof 使用简介

REFINE


以上所述就是小编给大家介绍的《golang pprof 使用简介》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

我的第一本算法书

我的第一本算法书

[日]石田保辉、[日]宮崎修一 / 张贝 / 人民邮电出版社 / 2018-10 / 69.00元

本书采用大量图片,通过详细的分步讲解,以直观、易懂的方式展现了7个数据结构和26个基础算法的基本原理。第1章介绍了链表、数组、栈等7个数据结构;从第2章到第7章,分别介绍了和排序、查找、图论、安全、聚类等相关的26个基础算法,内容涉及冒泡排序、二分查找、广度优先搜索、哈希函数、迪菲 - 赫尔曼密钥交换、k-means 算法等。 本书没有枯燥的理论和复杂的公式,而是通过大量的步骤图帮助读者加深......一起来看看 《我的第一本算法书》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具