Golang 火焰图和性能优化

golang中有pprof包来做代码的性能监控,可以生成代码的调用堆栈和cpu的使用时间

接下来我们看一下pprof的使用过程

环境安装

下载graphviz:https://graphviz.gitlab.io/_pages/Download/Download_windows.html

windows下下载msi格式,安装成功后,进入命令行查看是否安装成功

命令: dot -version (记住graphviz需要设置到windows的path下)

如何使用

在程序中加入如下代码:

import "net/http"
import _ "net/http/pprof"
func main() {// 主函数中添加http.ListenAndServe("0.0.0.0:9999", nil)
}

执行如下命令:

go tool pprof -http=:1234 http://localhost:9999/debug/pprof/profile

过30秒中后会出现如下界面,选择 Flame Graph

如何看图

每个框代表一个栈里的一个函数
Y轴代表栈深度(栈桢数)。最顶端的框显示正在运行的函数,这之下的框都是调用者。在下面的函数是上面函数的父函数
X轴代表采样总量。从左到右并不代表时间变化,从左到右也不具备顺序性
框的宽度代表占用CPU总时间。宽的框代表的函数可能比窄的运行慢,或者被调用了更多次数。框的颜色深浅也没有任何意义
如果是多线程同时采样,采样总数会超过总时间

Golang 火焰图相关推荐

  1. 安装golang 火焰图

    服务器配置属于小白级别 安装个火焰图费了一天半的时间,配置路径的问题[扎心到不行的说] 总结一下安装过程和遇到的问题 安装: 1. 安装go-torch[遇到各种问题,心塞] go get githu ...

  2. Golang FlameGraph(火焰图)

    为什么80%的码农都做不了架构师?>>>    简介 初学golang(一个月多),之前主要用其他语言,如有问题欢迎指出. 安装 go get github.com/uber/go- ...

  3. Golang pprof 性能分析与火焰图

    文章目录 1. 安装graphviz 1.1 下载 graphviz (windows 环境) 1.2 测试graphviz是否安装成功 2. 使用pprof 2.1 修改代码 2.2 火焰图生成 3 ...

  4. 记一次获得 3 倍性能的 go 程序优化实践,及 on-cpu / off-cpu 火焰图的使用

    转自:https://mp.weixin.qq.com/s/9IKaXeWTiiQTFlvZzxgsEA 记一次获得 3 倍性能的 go 程序优化实践,及 on-cpu / off-cpu 火焰图的使 ...

  5. Go代码调优利器-火焰图

    转自: https://lihaoquan.me/2017/1/1/Profiling-and-Optimizing-Go-using-go-torch.html Go代码调优利器-火焰图 go 调优 ...

  6. 使用火焰图(FlameGraph)分析程序性能

    火焰图概念 火焰图(FlameGraph)是 svg 格式的矢量图,是先通过 perf 等工具分析得到结果,并将该结果生成的具有不同层次且支持互动的图片,看起来就像是火焰,这也是它的名字的由来.表现形 ...

  7. Linux下用火焰图进行性能分析

    1 火焰图简介 很多人感冒发烧的时候, 往往会模仿神农氏尝百草的路子: 先尝尝抗病毒的药, 再试试抗细菌的药, 甭管家里有什么药挨个试, 什么中药西药, 瞎猫总会碰上死耗子, 如此做法自然是不可取的, ...

  8. Go pprof和火焰图

    Profiling 在计算机性能调试领域里,profiling 就是对应用的画像,这里画像就是应用使用 CPU 和内存的情况.也就是说应用使用了多少 CPU 资源?都是哪些部分在使用?每个函数使用的比 ...

  9. 在CentOS 6.6 x86_64上安装SystemTap/Perf+FlameGraph玩转火焰图实录

    下面是我结合网上资料摸索出的可行的操作方法,记录在这样,以备后面继续研究.操作系统是CentOS 6.6 x86_64. 1.将内核版本升级到最新版 因为我机器上CentOS 6.6的内核版本号是2. ...

最新文章

  1. [转]wxODBC(wxWidgets)中使用驱动程序方式打开数据库
  2. python数字的鲁棒输入_请教关于python的手写数字识别神经网络问题~~~~
  3. nodejs--http模块
  4. 中国在两年内赶超美国AI?李开复:不一定
  5. 对现代C++的一点看法
  6. jqGrid Events
  7. 如何设计一条稳定的应用交付流程?|云效工程师指北
  8. HTML5 飞鸽传书web service都发布到交互服务器
  9. 【建议收藏】找不到免费的角色动画?来试试mixamo
  10. python中的for in 语句_2、python,for..in语句
  11. 20200329:K 个一组翻转链表(leetcode25)
  12. Nginx的内部(进程)模型
  13. plsql创建、测试存储过程
  14. Excel鼠标所在行列填充颜色
  15. oracle 定时 analyze,Oracle工具:Analyze
  16. php快照劫持代码,php快照劫持跳转代码,php快照劫持源码下载
  17. 学习笔记(十)在网页中添加矢量图形
  18. 新手前端程序员就职指南之 - 入职第一天
  19. 常见的dataframe选取行列方式
  20. Flask表单提交的方法

热门文章

  1. 计算机英语大作业,英语学期大作业
  2. mysql 获取当天时间差_php-当前日期和时间-获取、插入到mysql、8小时时差错误
  3. QT中事件与图形处理详细(鼠标、键盘、定时等事件与图片加载处理)
  4. Jmeter察看结果树之HTML使用
  5. ABB机器人PCSDK使用(三)
  6. python实现简单计算器(加减乘除)
  7. SoildWorks画草图拖影问题
  8. java做图插件_java报表开发插件制作双轴图
  9. 盘点那些令人惊艳的黑科技
  10. 序列检测(FSM状态机)