Golang性能调优
Posted Go编程之旅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang性能调优相关的知识,希望对你有一定的参考价值。
直接上代码,这里提供基于gin框架的接口
源代码
获取运行的 goroutines 列表,以及调用关系
func GetGoroutine(c *gin.Context) {
c.Header("Content-Type", "text/plain")
p := pprof.Lookup("goroutine")
p.WriteTo(c.Writer, 1)
}
报告程序的内存使用情况
func GetMemProfile(c *gin.Context) {
f, err := os.Create("/path/to/mem/profile")
if err != nil {
c.JSON(http.StatusOK, gin.H{
"result": err,
"code": "200 OK",
})
}
// WriteHeapProfile 等价于 Lookup("heap").WriteTo(w, 0)
pprof.WriteHeapProfile(f)
// 关闭文件
f.Close()
c.JSON(http.StatusOK, gin.H{
"code": "200 OK",
})
return
}
调用这个接口后,内存信息报存在上面红色字体标红的路径
go-torch安装
go get github.com/uber/go-torch
获取火焰图脚本
$ cd $GOPATH/src/github.com/uber/go-torch
$ git clone https://github.com/brendangregg/FlameGraph.git
生成火焰图
$ go-torch --alloc_objects /path/to/binary/file /path/to/mem/profile
火焰图样例
本文到此结束,后面纯属为了凑字数
。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。
凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数
以上是关于Golang性能调优的主要内容,如果未能解决你的问题,请参考以下文章
Go开源宝藏基于 Golang 语法的性能调优技巧(字符串拼接)
Go开源宝藏基于 Golang 语法的性能调优技巧(数组的遍历)
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段