记 Go 的一次profile

最近在搞p2p的调度,需要做一个tcp的双向代理。最开始只能到20w连接,10w的qps,现在做到了60w 连接,40w qps都没问题。cpu 用了16核,一共24核。

大部分会选择pprof的 web 模式,其他方式可以参看其他博客。操作方式如下:

首先,引入相关包

import (
    "net/http"
    _ "net/http/pprof"
)
然后,启动web程序

go func() {
       http.ListenAndServe(fmt.Sprintf(":%d", config.Main.MonitorPort), nil)
    }()
这样就可以使用pprof提供的profile功能了,功能列表如下:

也可以使用curl 查看:

那些框住的就是浏览器显示的链接,如显示堆栈是 http://192.168.110.127:8601/debug/pprof/heap?debug=1

但是很多情况下,服务端的端口是有防火墙的,所以需要另外一种使用方式,go tool pprof 方式。

go tool pprof http://localhost:6060/debug/pprof/profile   # 30-second CPU profile
go tool pprof http://localhost:6060/debug/pprof/heap      # heap profile
go tool pprof http://localhost:6060/debug/pprof/block     # goroutine blocking profile

CPU的调试,可以用svg > 1.svg 保存到svg文件,然后用浏览器打开,如:


可以使用 top N,和 list function 进行查询哪个函数的哪一行耗费cpu高,特别的,需要源文件,没有源文件是不能list 的

前三列的分别是,这一行的运行的采样值,这一行的调用函数的采样值,行号。也可以使用disasm function,用汇编替代源代码进行显示。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值