golang性能分析 pprof的使用 graphviz

news2024/12/28 19:29:05

golang性能分析 pprof的使用 graphviz

  • 1 参考文档
  • 2 pprof、Graphviz介绍
  • 3 Graphviz下载 安装
  • 4 使用

1 参考文档

参考1:golang性能分析,pprof的使用,graphviz,火焰图
参考2:Golang中的pprof分析环境搭建【Windows环境】
参考3:pprof性能分析-火焰图

2 pprof、Graphviz介绍

pprof:是golang 自带性能剖析工具,可以帮助定位程序中可能存在的问题,是go服务程序异常时辅助排查问题的有效工具。
Graphviz:是开源的图形可视化软件。图形可视化是一种将结构信息表示为抽象图形和网络图的方法。它在网络,生物信息学,软件工程,数据库和网页设计,机器学习以及其他技术领域的可视化界面中具有重要的应用。

因为pprof是原始输出数据,使用 Graphviz 可以将数据图形化展示。

3 Graphviz下载 安装

  1. 下载地址:https://graphviz.org/download,下滑到Windows位置处可以下载windows版本的Graphviz。

在这里插入图片描述
2. 安装

记得将Graphviz添加到系统的环境变量中。

在这里插入图片描述
可以修改安装目录。

在这里插入图片描述

  1. 验证安装结果
    cmd,输入 dot -version后显示以下内容,表明安装成功。
dot - graphviz version 8.0.5 (20230430.1635)
libdir = "D:\Software\pprof\Graphviz\bin"
Activated plugin library: gvplugin_dot_layout.dll
Using layout: dot:dot_layout
Activated plugin library: gvplugin_core.dll
Using render: dot:core
Using device: dot:dot:core
The plugin configuration file:
        D:\Software\pprof\Graphviz\bin\config6
                was successfully loaded.
    render      :  cairo dot dot_json fig gdiplus json json0 map mp pic pov ps svg tk xdot xdot_json
    layout      :  circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
    textlayout  :  textlayout
    device      :  bmp canon cmap cmapx cmapx_np dot dot_json emf emfplus eps fig gif gv imap imap_np ismap jpe jpeg jpg json json0 metafile mp pdf pic plain plain-ext png pov ps ps2 svg tif tiff tk xdot xdot1.2 xdot1.4 xdot_json
    loadimage   :  (lib) bmp eps gif jpe jpeg jpg png ps svg

4 使用

需要用到go tool pprof命令来辅助查看以及图形化的方式来展示。

  1. 添加配置并启动程序
  • 加入依赖库
	"net/http"
	_ "net/http/pprof"
  • 加入运行分析性能的代码
	go func() {
		log.Println(http.ListenAndServe("127.0.0.1:6060", nil))
	}()
  1. 抓取程序运行分析结果
D:\Software\pprof>go tool pprof http://localhost:6060/debug/pprof/profile

Fetching profile over HTTP from http://localhost:6060/debug/pprof/profile
Saved profile in C:\Users\chenlc\pprof\pprof.___10go_build_dsms_admin_app_task_job.exe.samples.cpu.001.pb.gz
File: ___10go_build_dsms_admin_app_task_job.exe
Build ID: C:\Users\chenlc\AppData\Local\JetBrains\GoLand2023.1\tmp\GoLand\___10go_build_dsms_admin_app_task_job.exe2023-06-09 11:41:18.3871269 +0800 CST
Type: cpu
Time: Jun 9, 2023 at 11:41am (CST)
Duration: 30.11s, Total samples = 14.96s (49.69%)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof)
  1. 图形化显示性能分析结果
    退出命令行,复制Saved profile后面的文件名。这样就是在浏览器中打开了,默认是以 greph 的方法展示,首页和上面的图形一样。在VIEW中可以切换到Flame Graph
go tool pprof -http localhost:3001 C:\Users\chenlc\pprof\pprof.___10go_build_dsms_admin_app_task_job.exe.samples.cpu.001.pb.gz

在这里插入图片描述

在这里插入图片描述
注意:颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调。

跨度越大,占比资源(CPU/内存)越大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

隆重共建开放,共享未来 | 2023 开放原子全球开源峰会 OpenAtom OpenHarmony 分论坛即将启幕

在全球数字化进程快速发展的背景下,OpenAtom OpenHarmony(以下简称“OpenHarmony”)旨在通过面向全场景、全连接、全智能时代、基于开源的方式,搭建下一代智能终端设备操作系统的框架和平台,为消费、金融、能源、教育、…

光模块失效的原因及预防措施汇总

光模块从生产到使用都必须有规范化的操作方法,任何不规范的动作都可能造成光模块隐性的损伤或者永久的失效,下面就跟着小编来学习一下预防光模块失效的方法吧! 一、光模块失效的主要原因 1、光模块受到静电伤害(ESD损伤)&#xf…

2023 年最新版 Java 后端最全面试攻略,全面对标 BATJ互联网大厂

前言 小编分享的这份 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点&#…

爬虫案例-使用Session登录某知名网站(JS逆向AES-CBC加密+MD5加密)

总体概览:使用Session登录该网站,其中包括对password参数进行js逆向破解 (涉及加密:md5加密AES-CBC加密) 难度:两颗星 目标网址:aHR0cHM6Ly93d3cuZnhiYW9nYW8uY29tLw 下面文章将分为四个部分…

证券公司软件测试面试总结分享!

这家公司是做证券项目的,约的9点钟,路程还是有点遥远,转了一趟公交两趟地铁,精力都花在了路上,感觉有点累,以下是今天得面试流程。 到公司前台给我了一张面试表,写完之后就是等待面试。一共面试…

Java开发手册中为什么禁止使用isSuccess作为布尔类型变量名以及POJO中基本类型与包装类型的使用标准

场景 Java开发手册中关于POJO的布尔类型的变量名的要求是: 【强制】POJO 类中的任何布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误。 说明:在本文 MySQL 规约中的建表约定第一条,表达是与否的变量采用 is…

【新版】系统架构设计师 - 知识产权与标准化

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 知识产权与标准化考点摘要保护范围与对象识产权与保护期限知识产权与知识产权人的确定知识产权与侵权判定标准化(标准分类与编号) 架构 - 知识产权与标准化 考点摘要 保护…

JavaSE-06 【面向对象+封装】

JavaSE-06 [面向对象封装] 第一章 面向对象思想 1.1 面向过程和面向对象 面向过程: 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了面向对象: 面向对象是把构成…

windows服务器自带IIS搭建网站并发布公网访问的详细教程

文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 1.前言 在网上各种教程和介绍中,搭建网页都会借助各种软件的帮助,比如…

关于数据生成二维码保存和解密删除二维码

文章目录 前言一、pom配置依赖二、文件引入1.BufferedImageLuminanceSource2.QRCodeUtil3.MyPicConfig4.UploadUtils三、测试前言 所需文件: MyPicConfig 主要解决上传图片实时刷新BufferedImageLuminanceSource 算法文件QRCodeUtil 生成二维码工具类UploadUtils 主要解决上传…

Python中模块的动态导入和自动安装

前言 在 Python 开发中,正确管理和安装所需的第三方模块是至关重要的,但手动处理模块依赖可能会变得繁琐且容易出错。 为了简化这一过程,Python 提供了动态导入和自动安装模块的能力。本文将介绍如何使用动态导入和自动安装模块的方法&#x…

自学黑客技术很难吗?如何自学黑客技术

有人的地方就有江湖,有互联网江湖的地方就有web安全工程师的身影。随着移动互联网的快速发展,网络安全问题成为越来越重要的事情,但由于之前国家对网络安全的不重视,导致网络安全人才严重缺失,所以成为一名网络安全工程…

爱眼护眼的倡导者,康瞳护眼吧引领更多的人关注眼部健康

爱眼护眼的倡导者,康瞳护眼吧引领更多的人关注眼部健康#微信热点#康瞳护眼膏百收网SEO 大家早上好有好消息告诉大家 人民日报连续❷大版面报道📰 关于 ❝青少年近视眼防控的宣传❞ ——降 低近视率迫在眉睫‼️ 轻体营开营倒计时 ⏰⏰3天⏰⏰ 来此一生&#x…

微信小程序实现生成分享海报案例

一、引入插件painter (1)克隆地址:https://gitcode.net/mirrors/Kujiale-Mobile/Painter (2)下载的painter放到小程序的components目录下 二、页面中引入插件 (1)页面的json文件 "using…

最强总结,Python自动化测试-sign签名实战,精品整理...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 一般公司对外的接…

如何在一周内成为更好的软件测试员?七个步骤带你一步一步晋升...

一、引言 软件测试是确保软件质量的关键步骤,而成为一个更好的软件测试员并非一朝一夕之事。然而,通过对一些关键领域的集中学习和实践,我们可以在短短一周内取得显著的进步。下面,我们将为你提供一周内可以立即执行并取得结果的…

豆瓣评分9.2,最牛R语言实战书升级版来了!

R 作为一个开源项目,在很多操作系统上都可以免费获得,包括 Windows、macOS 和 Linux。不管你用 R 做数据收集、汇总、转换,还是探索、建模、可视化或展示方面的工作,它都可以满足你。 目前 R 已经成为统计、预测分析和数据可视化…

【Protobuf速成指南】.proto文件的编写与编译

文章目录 1.0版本一、编写.proto文件1.文件规范:2.注释方式:3.指定proto3语法:4.package申明符5.定义message6.编写消息字段①类型对照表②唯一编号 二、编译.proto文件1. 编译指令2.源码分析 三、序列化和反序列化的使用四、小结 1.0版本 本…

(基于python)简单实现接口自动化测试

一、简介 本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势,然后简单讨论了一下接口测试框架的要点,最后介绍了一下我们目前正在使用的接口测试框架pithy。期望读者可以通过本文对接口自动化测试有一个大致的了解。 二、引言 …

Volo.Abp升级小记(二)创建全新微服务模块

文章目录 创建模块领域层应用层数据库和仓储控制器配置微服务 测试微服务微服务注册添加资源配置配置网关 运行项目 假设有一个按照 官方sample搭建的微服务项目,并安装好了abp-cli。 需要创建一个名为GDMK.CAH.Common的模块,并在模块中创建标签管理功能…