Golang-go_tool_pprof性能监控

joe_chou · · 2708 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

什么是go tool pprof性能监控?怎么用?以下会为你一一解答,还会和java工具对比哦。

Let's Go!


1.结论

  • Golang 自带工具监控cpu,内存比较简单,并提供可视化界面。
  • 学习成本较低。
  • 推荐使用。

2.是什么?

  • 用于量化go语言性能而存在的分析工具
  • 使用可视化工具来分析服务器运行时生成的预定格式数据
  • 多种数据分析图
  • golang package中自带的工具

3.有什么种类?

  • Heap Profile: 内存堆栈图,用于分析内存使用率
  • 30-second CPU profile: 30s内的cpu使用率,包括GC时间占比
  • Goroutine Blocking Profile: goroutine的阻塞分析图,分析goroutine是否有泄漏
  • 5-second executable trace: 收集5s 执行足迹

4.怎么用

启动

建立main方法并启动

package main

import (
    "net/http"
    _ "net/http/pprof"
)

func main() {
    go func() {
        http.ListenAndServe("0.0.0.0:6060",nil)
    }()
}

图形化工具 - graphviz

安装后,才能正常显示go的绘图,下载地址

应用

  1. cmd line
  1. website

http://localhost:6060/debug/pprof

5.内存监控

模拟程序

  1. 启动监控程序
  2. 初始化并读取内存信息
  3. 循环分配大内存
  4. 再次读取内存信息
  5. 通过makeMem分配大内存

如下图:

clipboard.png

结果

clipboard.png

其中包含:内存分配信息 与 统计基本信息

如何阅读

  • 从上到下,最顶端为入口
  • 方框:大:占用时间/资源比较多,小则与之相反
  • 线条:粗:占用时间/资源比较多,小则与之相反
  • 立方体:占用并没有释放的内存

6.cpu监控

模拟程序

  1. 监听监控端口
  2. goroutine斐波拉契数列
  3. 运行斐波拉契数列

如下图:

clipboard.png

结果

clipboard.png

其中包含:

  • 占用cpu时间
  • 调用链路
  • 统计时长
  • runtime.morestack:申请栈空间

7.与java对比

对比项 Golang Java
性能工具 自带 部分自带
GC信息 设置环境变量并重启程序 直接通过命令/打gc.log
堆栈信息 侵入/清晰 非侵入/清晰
CPU信息 查看成本/要求较低 查看成本/要求较高

8.更多命令

http://wiki.jikexueyuan.com/project/go-command-tutorial/0.12.html

9.参考资料

http://studygolang.com/articles/2110
https://segmentfault.com/a/1190000000501635
http://www.cnblogs.com/yjf512/archive/2012/12/27/2835331.html

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:joe_chou

查看原文:Golang-go_tool_pprof性能监控

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

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