[Golang] 一个线上的 Go 程序,是否应该长期开启 pprof

2022-12-26 15:00:59 +08:00
 Aumujun
3122 次点击
所在节点    Go 编程语言
13 条回复
allgy
2022-12-26 15:06:33 +08:00
不应该,开启 pprof 会影响性能
v2wtf
2022-12-26 15:08:19 +08:00
没性能压力的,建议开着。你永远不知道线上会出什么幺蛾子。
FarmerChillax
2022-12-26 16:03:58 +08:00
赞同二楼说的,你永远不知道线上会出什么幺蛾子!!!
我再补充一下:
没性能压力的,建议开着。
有性能压力的,建议多开两个实例😆
perfectlife
2022-12-26 16:39:38 +08:00
运维的心声:硬件其实挺不值钱的,比起出故障的损失(经济和背锅)
Aumujun
2022-12-26 16:41:39 +08:00
@perfectlife @FarmerChillax @v2wtf 那还是开着好😆,这跑的也不是太消耗性能的程序
29EtwXn6t5wgM3fD
2022-12-26 16:45:58 +08:00
在没有 pprof 的时候只会耗一个 http 协程的开销,只有在 pprof 的时候才会有额外的开销。
virusdefender
2022-12-26 16:47:09 +08:00
我都是注册一个 sigusr1 来开启 pprof ,默认不开,不过一直监听一个本地端口也无所谓
gam2046
2022-12-26 17:10:50 +08:00
#3 是我最后实践的方式。

之前遇到过一个问题,grpc 服务,不定时出现 OOM ,由于配置了 docker restart always ,所以头几次 oom 并没有人发现。

快两个月以后,有客户反应,阶段性服务不可用,这个时候才回去看日志,才知道上线之处就有问题了。

之后就不管需要不需要,pprof 一律都给安排上了。实在对性能要求高的,一个开,一个不开,前面怼上 SLB
Aumujun
2022-12-26 18:45:50 +08:00
@gam2046 那如果是没开 pprof 的那个出现问题呢
Aumujun
2022-12-26 18:46:49 +08:00
@virusdefender 做的动态的开关吗 好像也是个不错的操作。
gamexg
2022-12-26 20:46:57 +08:00
net/http/pprof
会有性能损耗?
我看源码,只会在 init 函数注册几个 debug/pprof http HandleFunc 。
tairan2006
2022-12-27 08:09:40 +08:00
不都是用 http 接口么…本来 metric 也要 http 啊,有啥开销
paceewang1
2022-12-29 09:36:00 +08:00
pprof 不会消耗性能吧,我记得压测对比过 http 服务是相差无几的

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

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

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

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

© 2021 V2EX