golang 内置性能优化工具 go pprof 使用

1. 使用

import _ "net/http/pprof"

func main() {
  http.ListenAndServe("0.0.0.0:6060", nil) // 启动服务
}

2. 分析

2.1 分析内存

第一步:打开 pprof 控制台

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

第二步:查看占用内存最多的一些函数信息。

然后在控制台输入

top 10

flat: 本函数占用的内存量
flat%: 本函数内存占使用内存总量的百分比
sum%: 前面每一行flat百分比的和
cum: 累计量,main函数调用了函数f,函数f占用的内存量,也会记录进来
cum%: 累计量占总量的百分比

就会列出消耗内存 top 10 的函数方法。比如有一个方法命叫 RoundTrip

第三步

list RoundTrip

这个时候会出现更详细的代码位置

2. 分析 go runtine

第一步:打开 pprof 控制台

go tool pprof http://127.0.0.1:6060/debug/pprof/goroutine

第二步和第三步 和 上边的基本一样。

3. 优化

  1. 发现有内存泄漏,或者过多的内存占用,可以及时释放资源。
  2. 发现有 goruntine 泄漏,或者过多的 goruntine 队列,可以采用 github.com/panjf2000/ants 这个库来节省 goruntine 的开销。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值