首页 / GO / golang内存分析简易方法
golang内存分析简易方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了golang内存分析简易方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2430字,纯文字阅读大概需要4分钟。
内容图文
![golang内存分析简易方法](/upload/InfoBanner/zyjiaocheng/953/2e5486b1bb474762ae15b596a7030760.jpg)
文章目录
通过
net/http/pprof
工具来进行分析内存
pprof简介
pprof
是用于可视化和分析性能分析数据的工具; 以profile.proto
读取分析样本的集合,并生成报告以可视化并帮助分析数据(支持文本和图形报告)。
支持模式
- Report generation:报告生成
- Interactive terminal use:交互式终端使用
- Web interface:Web 界面
用途
- CPU Profiling:CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况,可确定应用程序在主动消耗 CPU 周期时花费时间的位置
- Memory Profiling:内存分析,在应用程序进行堆分配时记录堆栈跟踪,用于监视当前和历史内存使用情况,以及检查内存泄漏
- Block Profiling:阻塞分析,记录 goroutine 阻塞等待同步(包括定时器通道)的位置
Mutex Profiling:互斥锁分析,报告互斥锁的竞争情况;
使用示例
引入pprof
net/http/pprof
对 runtime/pprof
进行了封装,并在http端口上暴露出来,入口为 IP:PORT/debug/pprof/
;
若应用为web服务器,只需引入包即可_ "net/http/pprof"
,会自动注册路由到/debug/pprof/
;
若为服务时程,可开启一个goroutine开启端口并监听;
package main
import (
"github.com/astaxie/beego"
_ "github.com/beeWeb/routers"
"net/http"
_ "net/http/pprof"
)
func main() {
go func() {
http.ListenAndServe("0.0.0.0:8090", nil)
}()
beego.Run()
}
数据分析
访问 http://127.0.0.1:8090/debug/pprof/
即可实时查看性能数据;
常用的采集分析命令:
go tool pprof http://localhost:8080/debug/pprof/profile?seconds=30 默认采集需要30秒
go tool pprof http://localhost:8080/debug/pprof/heap
-inuse_space:分析应用程序的常驻内存占用情况
-alloc_objects:分析应用程序的内存临时分配情况
go tool pprof http://localhost:8080/debug/pprof/block
go tool pprof http://localhost:8080/debug/pprof/mutex
命令执行后,在本地会保留一份分析报告,如pprof.alloc_objects.alloc_space.inuse_objects.inuse_space.001.pb.gz
,可以通过go tool pprof
来进行分析;
通过web可视化的方式可以分析数据:
go tool pprof -http=:8000 http://localhost:8080/debug/pprof/heap 查看内存使用
go tool pprof -http=:8000 http://localhost:8080/debug/pprof/profile 查看cpu占用
go tool pprof -http=:8000 pprof.alloc_objects.alloc_space.inuse_objects.inuse_space.001.pb.gz 对本地生成文件的解析查看
注意,需要提前安装
Graphviz
用于画图:
下载地址:https://graphviz.gitlab.io/download/
windows:https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.zip
解压后,添加环境变量 Path下添加 %graphviz%\bin;
测试:命令提示符下 dot -V # 打印版本信息
若是Linux,yum install graphviz
# 默认安装版本为为2.30 依赖项较多;
访问 http://localhost:8000/ui
, 即可看到详细的分析报告及各种图示;
eg:
内容总结
以上是互联网集市为您收集整理的golang内存分析简易方法全部内容,希望文章能够帮你解决golang内存分析简易方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。