Golang使用pprof监控性能

阿泽Aze · · 89 次点击 · · 开始浏览    

前言

之前一直研究过golang 的 pprof的性能分析,但是没搞出火焰图,后面查了一些资料学会了生成火焰图。
今天我就用直接简单暴力的方式的教程来说明怎么用Golang的pprof监控和生成火焰图。

简单使用pprof

一.在代码里面写监听接口口。

#必须要 import "net/http/pprof"
    go func() {
        if err := http.ListenAndServe("0.0.0.0:6060", nil); err != nil {
            fmt.Println("0.0.0.0:6060", err.Error())
        }
    }()

如下图所示:
Golang使用pprof监控性能

二.运行程序。

三.查看pprof性能

访问 http://localhost:6060/debug/pprof/
Golang使用pprof监控性能
Golang使用pprof监控性能

如果你不想使用网页的交互模式,可以再终端使用以下命令,当然每次都是新数据:

#查看堆信息
go tool pprof --text http://localhost:6060/debug/pprof/heap

结果如下:
Golang使用pprof监控性能

火焰图

一、Go torch
go-torch是Uber公司开源的一款针对Go语言程序的火焰图生成工具,能收集 stack traces,并把它们整理成火焰图,直观地程序给开发人员。

go-torch是基于使用BrendanGregg创建的火焰图工具生成直观的图像,很方便地分析Go的各个方法所占用的CPU的时间, 火焰图是一个新的方法来可视化CPU的使用情况,本文中我会展示如何使用它辅助我们排查问题。
二、安装

1.首先,我们要配置FlameGraph的脚本

FlameGraph 是profile数据的可视化层工具,已被广泛用于Python和Node

git clone https://github.com/brendangregg/FlameGraph.git

2.检出完成后,把flamegraph.pl拷到我们机器环境变量$PATH的路径中去,例如:

cp flamegraph.pl /usr/local/bin

3.在终端输入 flamegraph.pl -h 是否安装FlameGraph成功

Golang使用pprof监控性能

4.安装go-torch

有了flamegraph的支持,我们接下来要使用go-torch展示profile的输出,而安装go-torch很简单,我们使用下面的命令即可完成安装

go get -v github.com/uber/go-torch

5.使用go-torch命令

①go-torch -h 查看帮助,如下:
Golang使用pprof监控性能

② 程序跑起来,执行go-torch如下:

#采集60秒的数据,在当前目录下生成cpu.svg文件
go-torch -u http://127.0.0.1:6060 --seconds 60 -f cpu.svg

Golang使用pprof监控性能

③打开svg文件,查看火焰图,如下:
Golang使用pprof监控性能

参考文章:

  1. https://lihaoquan.me/2017/1/1/Profiling-and-Optimizing-Go-using-go-torch.html
    2.http://xiaorui.cc/2016/03/20/golang%E4%BD%BF%E7%94%A8pprof%E7%9B%91%E6%8E%A7%E6%80%A7%E8%83%BD%E5%8F%8Agc%E8%B0%83%E4%BC%98/

本文来自:51CTO博客

感谢作者:阿泽Aze

查看原文:Golang使用pprof监控性能

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

89 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传