首页 > 其他 > 详细

golang性能分析

时间:2021-04-18 11:12:45      阅读:27      评论:0      收藏:0      [点我收藏+]

golang性能分析

go-torch 使用

1.)安装graphviz

apt intstall graphviz

2.)安装go-torch

go get github.com/uber/go-torch
下载并复制flamegraph.pl到$GOPATH/bin下
https://github.com/brendangregg/FlameGraph

输出prof到文件

通过调用runtime/pprof的API实现。go支持多种Profile,可以用go help testflag查看。
(1.)代码中插入输出cpu、mem的代码块

// 获取CPU信息
func main(){
    // 创建输出文件
    f,_ := os.Create("cpu.prof")
    defer f.Close()
    // 获取系统信息
    _ := pprof.StartCPUProfile(f)

    defer pprof.StopCPUProfile()
}

// 获取内存信息
func main(){
    // 创建输出文件
    f,_ := os.Create("mem.prof")
    // 获取系统信息
    _ := pprof.WriteHeapProfile(f)
    f1.Close()

    // 查看goroutine
    f1,_ := os.Create("goroutine.prof")
    gProf := pprof.Lookup("goroutine");
    gProf.WriteTo(f1,0)
    defer f1.Close()
}

(2.)编译运行后会自动输出对应的文件

go build xx.go  //生成二进制文件
./xx  // 运行二进制文件

// 使用pprof工具查看
go tool pprof prof cpu.prof  // 查看Cpu的性能数据,输入top,可以查看前十个占用cpu的代码块,可以使用list 方法名  查看具体某个方法占用的内存,执行时间等

// 或者使用go-torch查看
go-torch cpu.prof  // top

详细内容,可查看: https://golang.org/src/runtime/pprof/pprof.go

使用HTTP的方式输出Profile

1.)在应用程序中导入pprof包,并启动http server

import _ "net/http/pprof"

2.) 查看界面

http://IP:Port/debug/pprof

3.) 也可以通过pprof工具查看

go tool pprof _http://IP:PORT/debug/pprof/profile?seconds=10   // top -cum |  list xxx  | exit

go-torch seconds 10 http://IP:PORT/debug/pprof/profile

使用go test bench测试

go test -bench=.
go test -bench=. -cpuprofile=cpu.prof  // top -cum  | list xx | exit

golang性能分析

原文:https://www.cnblogs.com/tomtellyou/p/14672449.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!