【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
最近领导看到某个服务的内存占用很高,吩咐我查一下是啥问题。
前提
- 服务引用了 pprof 包
import (
_ "runtime/pprof"
)
- 监听了 http 端口
err := http.ListenAndServe(fmt.Sprintf(":%d", listenPort+1), nil)
if err != nil {
fmt.Println("srv http listen err", err.Error())
}
导出 pprof 文件
如果以上两个前提都满足,就可以导出 pprof 的 heap 文件。
在服务器上直接下载即可。
wget 127.0.0.1:8121/debug/pprof/heap
生成可视化网页
接下来就是用 pprof 解析 heap 文件。
pprof -http=8080 /path/to/heap
// or
go tool pprof -http=8080 /path/to/heap
分析
打开浏览器,访问 8080 端口,结果一目了然了。
原来是缓存啊,那没事。
参考资料
来源:oschina
链接:https://my.oschina.net/p1gd0g/blog/3146612