关于 Go pprof 的疑问

2019-04-11 20:50:09 +08:00
 Fitz

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

3991 次点击
所在节点    Go 编程语言
5 条回复
janxin
2019-04-11 23:06:43 +08:00
不是默认开启的,遇到性能问题的时候也未必能够及时开启。一般开启 pprof 会对线上有一定影响,要看性能退化程度,是否对线上服务造成直接影响进行综合判断。

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

另外多写 benchmark,在某些情况下的热路径下有奇效。Go 提供了非常丰富的标准工具,要多利用起来。
zhengxiaowai
2019-04-11 23:20:42 +08:00
开起来吧,多部署几个实例问题不大
hheedat
2019-04-12 17:28:50 +08:00
线上可以开启,用 http pprof,可以有一个监控程序定时获取线上的 profile 存档,好在异常的时候查询。有些 profile 只有在你调用的时候才会影响性能,有些会一直影响,你自己研究一下吧。
mornlight
2019-04-18 10:35:32 +08:00
@janxin #1 gops 有没有什么方便的办法搞出火焰图?只看到可以 gops pprof-cpu
janxin
2019-04-18 14:35:09 +08:00
@mornlight 这只是个入口,剩下的走 go 本身的火焰图或者其他的工具都 OK

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/554237

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX