美文网首页
go语言监控(内部使用)

go语言监控(内部使用)

作者: 明神特烦恼 | 来源:发表于2017-11-29 14:25 被阅读0次

一、pprof

package main
import (
"math/rand"
"testing"
)

func BenchmarkRandom(b *testing.B) {
for i := 0; i < b.N; i++ {
    random()
}
}

func random() int {
return rand.Intn(100)
}

go test -c go_test.go
$ ./main.test -test.bench=. -test.cpuprofile=cpu-profile.prof
$ go tool pprof main.test cpu-profile.prof
(pprof) top 5

利用这个命令查看堆栈信息:

go tool pprof http://localhost:6060/debug/pprof/heap

利用这个命令可以查看程序CPU使用情况信息:

go tool pprof http://localhost:6060/debug/pprof/profile

使用这个命令可以查看block信息:

go tool pprof http://localhost:6060/debug/pprof/block

例如:

1)go tool pprof http://localhost:6060/debug/pprof/profile
2)top10
3)web 需要浏览器支持
top10.png
各字段含义:
  1. 采样点落在该函数中的次数
  2. 采样点落在该函数中的百分比
  3. 上一项的累积百分比
  4. 采样点落在该函数,以及被它调用的函数中的总次数
  5. 采样点落在该函数,以及被它调用的函数中的总次数百分比
  6. 函数名

设置采样率

go tool pprof --seconds 25 http://localhost:9090/debug/pprof/profile

生成svg文件

先安装sudo apt-get install graphviz(绘图工具)
go tool pprof -alloc_space -cum -svg http://127.0.0.1:8080/debug/pprof/heap > heap.svg
svg文件可以直接通过浏览器打开

矢量图.png

二、go + FlameGraph

go-torch是Uber公司开源的一款针对Golang程序的火焰图生成工具,能收集 stack traces,并把它们整理成火焰图,直观地程序给开发人员。go-torch是基于使用BrendanGregg创建的火焰图工具生成直观的图像,很方便地分析Go的各个方法所占用的CPU的时间。

1) 下载安装go-torch

go get github.com/uber/go-torch 编译生成二进制,放入bin下

2)下载火焰图工具

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

3)目录拷贝

cp flamegraph.pl /usr/local/bin

4) 采样抓取pprof数据

go-torch -u http://localhost:6060 -t 10
Writing svg to torch.svg

相关文章

  • go语言监控(内部使用)

    一、pprof go test -c go_test.go$ ./main.test -test.bench=. ...

  • 10.map

    Go语言基础之map | Golang Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。 ...

  • 基于grafana+prometheus搭建基础设施监控

    背景 prometheus是一个开源的流行监控报警系统,使用go语言开发,在docker社区使用非常多,是goog...

  • go 语言进阶学习笔记(一)

    我先想分析一下现在有哪些公司使用go 语言,go语言在实际开发中有哪些使用场景,为什么要从其他语言转换成go语言。...

  • go 语言入门

    我先想分析一下现在有哪些公司使用go 语言,go语言在实际开发中有哪些使用场景,为什么要从其他语言转换成go语言。...

  • 使用Go语言 生成iOS SDK

    使用Go语言 生成iOS SDK 一.使用brew安装Go 1、安装命令 brew install go 2、...

  • 如何用 GVM 管理 Go 项目

    使用 Go 版本管理器管理多个版本的 Go 语言环境及其模块。 Go 语言版本管理器(GVM)是管理 Go 语言环...

  • TODO:Go语言goroutine和channel使用

    TODO:Go语言goroutine和channel使用 goroutine是Go语言中的轻量级线程实现,由Go语...

  • Go语言操作Redis

    Go语言操作Redis 在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。...

  • 02-Go语言常量和变量

    Go语言的数据类型 C语言的数据类型 Go语言的数据类型 Go语言各数据类型占用内存空间 Go语言中也可以使用si...

网友评论

      本文标题:go语言监控(内部使用)

      本文链接:https://www.haomeiwen.com/subject/zgwbmxtx.html