go tool pprof -http=:8080 pprof.__debug_bin264626416.alloc_objects.alloc_space.inuse_objects.inuse_space.037.pb.gz 我们发现RemoveSymbolmapInRedis方法调用的的LimitedPipeline.Eval()方法占用大量内存。 在该方法中找到对应的Eval方法调用代码,我们发现之前的开发者为了获取清理结果是否成功,将整个Eval返回的...
得到采样数据之后,使用go tool pprof工具进行内存性能分析。 go tool pprof默认是使用-inuse_space进行统计,还可以使用-inuse-objects查看分配对象的数量。 服务型应用 如果你的应用程序是一直运行的,比如 web 应用,那么可以使用net/http/pprof库,它能够在提供 HTTP 服务进行分析。 如果使用了默认的http.DefaultServeM...
生成的二进制文件,和cpu分析一致,可以通过启动交互终端或者web浏览器去进行查看,所以启动终端的方式我这里就暂时略去了, 讲讲不同点, 针对于内存,pprof在web 浏览器界面提供了几个维度去分析。 inuse_space: 正在使用,尚未释放的空间 inuse_object: 正在使用,尚未释放的对象 alloc_space: 所有分配的空间,包含已...
$ go tool pprof-inuse_space http://ip:amdin_port/debug/pprof/heap -inuse_space参数就是当前服务使用的内存情况,还有一个-alloc_space参数是指服务启动以来总共分配的内存情况,显然用前者比较直观,进入交互界面后我们用top命令看下当前占用内存最高的部分: “结果是非常的amazing啊”,当时的内存分配最大的就...
go tool pprof http://127.0.0.1:6064/debug/pprof/heap等价与go tool pprof --inuse_space http://127.0.0.1:6064/debug/pprof/heap对活跃内存对象打印,不包活会被GC掉的对象 top -pid 1123//对具体的pid进行top命令监控 ps -ef | grep worker等价于ps -aux | grep nginx根据进程名称查看进程的pid及启...
go tool pprof默认是使用-inuse_space进行统计,还可以使用-inuse-objects查看分配对象的数量。 服务型应用 如果你的应用程序是一直运行的,比如 web 应用,那么可以使用net/http/pprof库,它能够在提供 HTTP 服务进行分析。 如果使用了默认的http.DefaultServeMux(通常是代码直接使用 http.ListenAndServe(“0.0.0.0:8000...
pprof是go语言内置 的分析性能,分析数据的工具,pprof开启后,每隔一段时间(10ms)就会收集下当前的堆栈信息,获取格格函数占用的CPU以及内存资源;最后通过对这些采样数据进行分析,形成一个性能分析报告。pprof用 profile.proto 读取分析样本的集合,并声称可视化报告,以帮助分析数据 (支持文本和图形报告) ...
net/http/pprof中只是使用runtime/pprof包来进行封装了一下,并在http端口上暴露出来。 Go tool pprof辅助工具安装(图形工具graphviz为例) Windows: 1.官方下载安装包:http://www.graphviz.org/download/ 下载Stable稳定版本(.msi) 2.配置PATH系统环境变量: ...
pprof是go语言内置 的分析性能,分析数据的工具,pprof开启后,每隔一段时间(10ms)就会收集下当前的堆栈信息,获取格格函数占用的CPU以及内存资源;最后通过对这些采样数据进行分析,形成一个性能分析报告。pprof用 profile.proto 读取分析样本的集合,并声称可视化报告,以帮助分析数据 (支持文本和图形报告) ...
我们可以采用go tool pprof -inuse_space http://127.0.0.1:9090/debug/pprof/heap命令连接到进程中 查看正在使用的一些内存相关信息,此时我们得到一个可以交互的命令行。 我们可以看数据top10来查看正在使用的对象较多的10个函数入口。通常用来检测有没有不符合预期的内存 对象引用。