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

相关文章

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

springboot健康检查监控全过程

《springboot健康检查监控全过程》文章介绍了SpringBoot如何使用Actuator和Micrometer进行健康检查和监控,通过配置和自定义健康指示器,开发者可以实时监控应用组件的状态,... 目录1. 引言重要性2. 配置Spring Boot ActuatorSpring Boot Act

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re