V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Fitz
V2EX  ›  Go 编程语言

关于 Go pprof 的疑问

  •  1
     
  •   Fitz · 2019-04-11 20:50:09 +08:00 · 4182 次点击
    这是一个创建于 2062 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.是要等到线上有性能问题的时候才开启吗?那有问题要调试时岂不是要改代码重启服务
    2.线上开启对服务有影响吗?

    5 条回复    2019-04-18 14:35:09 +08:00
    janxin
        1
    janxin  
       2019-04-11 23:06:43 +08:00 via iPad   ❤️ 2
    不是默认开启的,遇到性能问题的时候也未必能够及时开启。一般开启 pprof 会对线上有一定影响,要看性能退化程度,是否对线上服务造成直接影响进行综合判断。

    开启不需要修改代码,通过内置对应的工具帮助随时开启。https://golang.google.cn/pkg/net/http/pprof/ 是一个对 HTTP 服务非常有帮助的工具。不过我推荐另外一款 Google 开源的工具 https://github.com/google/gops,原因是不需要对 pprof 做一些安全防护,也更适配一些提供非 HTTP 的服务。

    另外多写 benchmark,在某些情况下的热路径下有奇效。Go 提供了非常丰富的标准工具,要多利用起来。
    zhengxiaowai
        2
    zhengxiaowai  
       2019-04-11 23:20:42 +08:00
    开起来吧,多部署几个实例问题不大
    hheedat
        3
    hheedat  
       2019-04-12 17:28:50 +08:00
    线上可以开启,用 http pprof,可以有一个监控程序定时获取线上的 profile 存档,好在异常的时候查询。有些 profile 只有在你调用的时候才会影响性能,有些会一直影响,你自己研究一下吧。
    mornlight
        4
    mornlight  
       2019-04-18 10:35:32 +08:00
    @janxin #1 gops 有没有什么方便的办法搞出火焰图?只看到可以 gops pprof-cpu
    janxin
        5
    janxin  
       2019-04-18 14:35:09 +08:00
    @mornlight 这只是个入口,剩下的走 go 本身的火焰图或者其他的工具都 OK
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3597 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:41 · PVG 12:41 · LAX 20:41 · JFK 23:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.