golang gin pprof
GO性能分析
Go语言内置了获取程序运行数据的工具,包括以下两个标准库:
- runtime/pprof: 采集工具型应用运行数据进行分析
- net/http/pprof: 采集服务型应用运行时数据进行分析
pprof是什么?
pprof 是用于可视化和分析性能分析数据的工具
pprof 以 profile.proto 读取分析样本的集合,并生成报告以可视化并帮助分析数据(支持文本和图形报告)
profile.proto 是一个 Protocol Buffer v3 的描述文件,它描述了一组 callstack 和 symbolization 信息, 作用是表示统计分析的一组采样的调用栈,是很常见的 stacktrace 配置文件格式
支持什么使用模式
- Report generation:报告生成
- Interactive terminal use:交互式终端使用
- Web interface:Web 界面
可以做什么?
- CPU Profiling:CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况,可确定应用程序在主动消耗 CPU 周期时花费时间的位置
- Memory Profiling:内存分析,在应用程序进行堆分配时记录堆栈跟踪,用于监视当前和历史内存使用情况,以及检查内存泄漏
- Block Profiling:阻塞分析,记录 goroutine 阻塞等待同步(包括定时器通道)的位置
- Mutex Profiling:互斥锁分析,报告互斥锁的竞争情况
Gin如何做性能测试
gin是什么
gin,ojbk就是一套http框架(应该说只是组件吧)
gin pprof
我们上面看了pprof只有runtime和http下面有,那gin咋办?
不着急,找找就发现了,果然:
go get https://github.com/gin-contrib/pprof
在github找到了相关demo:
相当于是注册了gin。
运行之后,有如下:
打开:http://localhost:8080/debug/pprof/ (我这里是8083)
这时候你就可以进行压测和数据采集了。go pprof支持命令行。
go tool pprof --seconds 20 http://localhost:3000/debug/pprof/goroutine go tool pprof http://localhost:3000/debug/pprof/goroutine?second=20
go tool pprof命令行交互界面
go tool pprof通过命令行也可以实现强大的功能,我们来看下命令吧!
top 默认查看程序中占用cpu前10位的函数。 list + 函数名命令查看具体的函数分析 pdf 可以生成可视化的pdf文件。
那么开始压测吧
-
开启我们的服务
go run main.go
-
压测工具
推荐使用https://github.com/wg/wrk 或 https://github.com/adjust/go-wrk
我使用的是go-wrk
git clone git://github.com/adeven/go-wrk.git cd go-wrk go build ./go-wrk -c=100 -t=8 -n=1000 http://localhost:8083/info/325720270784552960/1
- 观察
通过观察我们发现主要性能消耗是在runtime、net、sql
到此进行了一次完整的pprof gin观测
注意
- 我们只应该在性能测试的时候才在代码中引入pprof
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
WiFi 6E将可能与5G网络共用6GHz频谱
即将开播:5月14日,Jenkins在K8S下的三种部署流程和实战演示 由于无线频谱有限,不同的网络标准有时会出现争夺频谱的情况,不过在未来推出的WiFi 6E上,就有机会可以与5G共用6GHz的频谱,大幅提升速度和容量。 (图片来源:unwire) 近日,美国联邦通信委员会(FCC)宣布,他们将会在4 月23 日投票决定是否针对未分配授权的6GHz频谱使用作出限制。包括5925-7125 Hz的无线频段范围。如果最后决定允许开放使用,则WiFi标准可以扩充其频宽,善用未分配授权出去的剩余频率。WiF 联盟方面预期投票会有正面结果,因此已经制定加入新频谱支援的WiFi 6E标准。 与之同时如果成事的话,则会有部分频率同时由5G和WiFi使用的情况。虽然这样有可能会造成无线电干扰的情况,但5G本身不主要使用这部分的频谱,WiFi方面亦只是用它作辅助,因此扩充可用频谱,对于改善WiFi和5 网络的速度和延迟而言,应该是利大于弊,两个标准之间亦不一定是个零和游戏。
- 下一篇
关系数据构建反应式的spring驱动程序
先说说什么是响应式 响应式编程或反应式编程(英语:Reactive programming)是一种面向数据流和变化传播的编程范式,直白的说就是:将变化的值通过数据流进行传播。 反应式架构文章 WebFlux定点推送、全推送灵活websocket运用【推】 WebFlux前后端分离 -- 数据响应式展示 【推】 webflux+redis/mongodb提供响应式API【推】 WebFlux是什么呢 WebFlux 模块的名称是 spring-webflux,名称中的 Flux 来源于 Reactor 中的类 Flux。Spring webflux 有一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好。 spring-webflux 模块。该模块包含对响应式 HTTP 和 WebSocket 客户端的支持,以及对 REST,HTML 和 WebSocket 交互等程序的支持。一般来说,Spring MVC 用于同步处理,Spring Webflux 用于异步处理。 Spring Boot Webflux 有两种编...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS关闭SELinux安全模块
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果