pprof (golang 性能监控与分析)

2024-02-21 22:38

本文主要是介绍pprof (golang 性能监控与分析),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考文章

https://blog.wolfogre.com/posts/go-ppof-practice/
https://www.cnblogs.com/yjf512/archive/2012/12/27/2835331.html
https://xguox.me/go-profiling-optimizing.html/
https://segmentfault.com/a/1190000016412013
https://github.com/google/pprof

示例代码

package mainimport ("log""net/http""runtime"_ "net/http/pprof"
)var datas []stringfunc Add(str string) string {data := []byte(str)sData := string(data)datas = append(datas, sData)return sData
}func main() {if true {go func() {for {log.Println(Add("https://github.com/EDDYCJY"))}}()runtime.GOMAXPROCS(1)               // 限制 CPU 使用数,避免过载runtime.SetMutexProfileFraction(1)  // 开启对锁调用的跟踪runtime.SetBlockProfileRate(1)      // 开启对阻塞操作的跟踪http.ListenAndServe("0.0.0.0:6060", nil)}}

pprof使用

阅读:https://blog.wolfogre.com/posts/go-ppof-practice/

浏览器查看

打开浏览器访问 http://localhost:6060/debug/pprof/
在这里插入图片描述

交互式终端

go tool pprof http://localhost:6060/debug/pprof/profile?seconds=60

在这里插入图片描述

可视化PDF

首先进入交互式终端,然后输入pdf命令,其他文件格式执行pprof help查看命令说明。
在这里插入图片描述
在这里插入图片描述

可视化火焰图

启动可视化界面的命令格式:

$ go tool pprof -http=":8081" [binary] [profile]

binary:可执行程序的二进制文件,通过go build命名生成
profile:protobuf格式的文件

go tool pprof http://localhost:6060/debug/pprof/profile?seconds=10

执行相应命令,在$GOPATH目录下会生成相应pb文件
在这里插入图片描述

启动可视化界面
在这里插入图片描述
go tool pprof -http=":8081" pprof.**.pb.gz
访问响应URL,即可查看火焰图

 curl http://localhost:8081/ui/flamegraph > flamegraph.html

在这里插入图片描述

block分析

报告协程阻塞的情况,可以用来分析和查找死锁等性能瓶颈,默认不开启, 需要调用runtime.SetBlockProfileRate开启。

go tool pprof http://ip:port/debug/pprof/block

协程分析

报告协程相关信息,可以用来查看有哪些协程正在运行、有多少协程在运行等。

go tool pprof http://ip:port/debug/pprof/goroutine

heap 分析

heap:查看堆相关信息,包括一些GC的信息。

go tool pprof http://ip:port/debug/pprof/heap

mutex 分析

查看互斥的争用情况,默认不开启, 需要调用需要在程序中调用runtime.SetMutexProfileFraction。

这篇关于pprof (golang 性能监控与分析)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/733292

相关文章

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

使用Python实现实时金价监控并自动提醒功能

《使用Python实现实时金价监控并自动提醒功能》在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价,但黄金价格实时波动频繁,总是盯着手机太累了,于是我用Python写了一个实时金价监控... 目录工具能干啥?手把手教你用1、先装好这些"食材"2、代码实现讲解1. 用户输入参数2. 设置无头浏

Java的"伪泛型"变"真泛型"后对性能的影响

《Java的伪泛型变真泛型后对性能的影响》泛型擦除本质上就是擦除与泛型相关的一切信息,例如参数化类型、类型变量等,Javac还将在需要时进行类型检查及强制类型转换,甚至在必要时会合成桥方法,这篇文章主... 目录1、真假泛型2、性能影响泛型存在于Java源代码中,在编译为字节码文件之前都会进行泛型擦除(ty

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持