V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Fitz

关于 Go pprof 的疑问

  •  1
     
  •   Fitz · Apr 11, 2019 · 4850 views
    This topic created in 2575 days ago, the information mentioned may be changed or developed.

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

    5 replies    2019-04-18 14:35:09 +08:00
    janxin
        1
    janxin  
       Apr 11, 2019 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  
       Apr 11, 2019
    开起来吧,多部署几个实例问题不大
    hheedat
        3
    hheedat  
       Apr 12, 2019
    线上可以开启,用 http pprof,可以有一个监控程序定时获取线上的 profile 存档,好在异常的时候查询。有些 profile 只有在你调用的时候才会影响性能,有些会一直影响,你自己研究一下吧。
    mornlight
        4
    mornlight  
       Apr 18, 2019
    @janxin #1 gops 有没有什么方便的办法搞出火焰图?只看到可以 gops pprof-cpu
    janxin
        5
    janxin  
       Apr 18, 2019
    @mornlight 这只是个入口,剩下的走 go 本身的火焰图或者其他的工具都 OK
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1172 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 18:12 · PVG 02:12 · LAX 11:12 · JFK 14:12
    ♥ Do have faith in what you're doing.