open-falcon / falcon-plus

An open-source and enterprise-level monitoring system.
Apache License 2.0
7.26k stars 1.53k forks source link

请问graph如何利用pprof进行内存分析? #905

Open JimmyTinsley opened 3 years ago

JimmyTinsley commented 3 years ago

现在遇到了graph内存缓慢持续上涨的情况, 想参照这篇文章 https://juejin.im/post/6844903855386263559 进行内存分析, 但是对graph的http端口加上 /debug/pprof 路径无法获得内存使用信息, 请问应该如何分析graph组件的内存找到故障原因?

JimmyTinsley commented 3 years ago

我自己查了一下原因. 由于graph模块使用了gin当做http框架, 而不是直接使用的net/http. gin框架接管了路由, 所以导致直接引入net/http/pprof这种方式理应注册的/debug/pprof路由路径没有生效 https://github.com/open-falcon/falcon-plus/blob/da7e74c7f749998eacc956f153693d0470987262/modules/graph/http/http.go#L23 同样的问题还出现在api和alarm组件里. 其他组件由于使用的是net/http, 所以pprof都是可以正常使用的.

gin框架如果想使用pprof, 需要手动添加/debug/pprof/*的路由, 或者是使用https://github.com/gin-contrib/pprof 这个包, 但是这个包目前需要gin v1.6.3及以上的版本, 即使是它的最初版本也需要gin v1.3.0及以上的版本

https://github.com/gin-contrib/pprof/blob/506e7fc714ea7f2dfd31745ca8430d006733f6ff/go.mod#L5

falcon-plus现在govendor中的gin版本还停留在v1.1.4, 请问能否提个PR升级一下?

laiwei commented 3 years ago

可以升级gin:) 欢迎 PR @JimmyTinsley

laiwei commented 3 years ago

PR #906