这里是Z哥的个人公众号
每周五11:45 按时送达
当然了,也会时不时加个餐~
我的第「223」篇原创敬上
大家好,我是Z哥。
最近系统在压测过程中发现有一个程序在压力增大后会内存溢出。正好之前自己对 Golang 里分析 dump 这块还没怎么涉及,借此契机学习一下。
网上搜了很多资料,发现 Golang 好像没有手动创建 dump 文件的方式(像 Java 的 jmap,.Net 的创建转储文件这种)。
要么通过设置环境变量,在程序 crash 的时候自动创建 dump 文件,要么程序里 import 一个 pprof 的 package,实时分析 dump 相关的信息。
如果有哪位老司机知道手动创建 dump 的方式,请在评论区教下大家,感谢~
下面我手把手教大家如何通过以上两种方式来分析内存溢出问题,步骤详细,包教包会,建议收藏~
/01 通过 pprof 实时分析/
pprof 全称是 performance profiles,是 google 官方提供的性能分析工具,项目地址:https://github.com/google/pprof。配合 Graphviz 使用可以提供图形化的能力。
使用它的方式很简单,配合 pprof 库来使用。只要在代码里增加两块代码。一块是 import:
_ "net/http/pprof"
另一块是main函数的开头部分
go func() {
http.ListenAndServe("0.0.0.0:8899", nil) //ip和端口可以更