go-pprof笔记

Golang性能调优(go-torch, go tool pprof) Go语言已经为开发者内置配套了很多性能调优监控的好工具和方法,这大大提升了我们profile分析的效率。此外本文还将重点介绍和推荐uber开源的go-torch,其生成的火焰图更方便更直观的帮我们进行性能调优。我也是在实际一次的性能调优中,接触到go-torch,非常棒。 阅读详情

开篇

编写好了golang服务之后,接着要开始关注服务的CPU,内存使用情况。golang提供了性能剖析工具,记录一些自己搜集到的信息,写下一些实践的情况。在golang中内置了pprof工具,专门来做golang语言的优化。

PProf 关注的模块

  • CPU profile:报告程序的 CPU 使用情况,按照一定频率去采集应用程序在 CPU 和寄存器上面的数据
  • Memory Profile(Heap Profile):报告程序的内存使用情况
  • Block Profiling:报告 goroutines 不在运行状态的情况,可以用来分析和查找死锁等性能瓶颈
  • Goroutine Profiling:报告 goroutines 的使用情况,有哪些 goroutine,它们的调用关系是怎样的

尝试

在代码中添加这些内容

import (
    ...
    "runtime"
    "runtime/pprof"
    ...
)
    var cpuprofile string = "./YZSvr.prof"
    f, err := os.Create(cpuprofile)
    if err != nil {
        logrus.Warn(err.Error())
    }
列名含义
flat函数执行消耗时间
flat%flat占CPU总时间的比例。程序总耗时
sum%前面每一行的flat占比总和
cum累计量
cum%cum占用总时间的比例
(pprof) top10
Showing nodes accounting for 7.47s, 73.60% of 10.15s total
Dropped 136 nodes (cum <= 0.05s)
Showing top 10 nodes out of 53
      flat  flat%   sum%        cum   cum%
     5.93s 58.42% 58.42%      5.98s 58.92%  runtime.stdcall1
     0.33s  3.25% 61.67%      2.04s 20.10%  runtime.timerproc
     0.30s  2.96% 64.63%      0.30s  2.96%  runtime.stdcall2
     0.23s  2.27% 66.90%      0.23s  2.27%  runtime.casgstatus
     0.14s  1.38% 68.28%      0.47s  4.63%  runtime.schedule
     0.14s  1.38% 69.66%      7.10s 69.95%  runtime.systemstack
     0.12s  1.18% 70.84%      0.13s  1.28%  runtime.(*mcache).prepareForSweep
     0.10s  0.99% 71.82%      0.19s  1.87%  octopus.com/octserver/YZSvr/yz_db.(*SYzDb).GetResult

生成的svg图片

 

 
20716125-bdb8ad292b8540bb.png
1R4KRH.png

 

(pprof) callgrind
Generating report in profile010.callgraph.out

安装:

go get -u github.com/google/pprof

直接使用pprof生成火焰图,在web里面查看:

go tool pprof YZSvr.exe YZSvr.prof

可以通过修改环境变量直接修改程序里面的线程数目;
export GOMAXPROCS=30

引用

使用go pprof进行golang程序内存分析 use pprof to fix oom 阅读详情

相关推荐

Go 学习笔记(81)— Go 性能分析工具 pprof

Go 语言工具链中的 go pprof 可以帮助开发者快速分析及定位各种性能问题,如 CPU消耗 、内存分配及阻塞分析 。 ​ 性能分析首先需要使用 runtime.pprof 包嵌入到待分析程序的入口和结束处 。runtime.pprof 包在运行时对程序进行每秒 100 次的采样,最少采样 1 秒。然后将生成的数据输出 , 让开发者写入文件或者其他媒介上进行分析。 ​ go pprof 工具链配合 Graphviz 图形化工具可以将 runtime.pprof 包生成的数据转换为 PDF格式,以图片的

wohu1104的专栏 1737

【ETCD】【实操篇(十八)】ETCD监控实战:提升系统健康与集群调试效率

每个 ETCD 服务器都通过其客户端端口暴露本地监控信息,数据包括了集群状态、性能指标、日志级别调试信息等,便于进行健康检查与故障排查。ETCD 提供了多个专门的调试和监控端点,支持系统健康检查、性能分析、故障诊断等多种操作。通过本文介绍的 ETCD 调试端点、性能指标和健康检查功能,管理员可以实时了解 ETCD 集群的运行状况,提前发现潜在的性能瓶颈或故障。在生产环境中,结合 Prometheus 进行数据抓取与监控,将大大提升 ETCD 集群的可观察性和稳定性。

zhangshenglu1的博客 1790

ROS教程(四):RVIZ使用教程(详细图文)

前言 根据前面的教程已经学会了创建功能包,那么本篇文章主要内容则是通过节点来发布数据至RVIZ

Leslie的博客 17万+

golang调度学习-调度流程

调度过程 以下就将会详细介绍golang的调度流程,方便阅读,将会省略部分无关代码。 初始化 调度器的初始化从 schedinit()函数开始,将会设置m最大个数(maxmcount)及p最大个数(GOMAXPROCS)等 func schedinit() { sched.maxmcount = 10000 // 设置m的最大值为10000 mcommoninit(_g_.m) ...

diaosssss的博客 2249

新手必看:用Simulink搭建飞跨电容三电平逆变器的完整流程(附SPWM配置技巧)

本文详细介绍了使用Simulink搭建飞跨电容三电平逆变器(FCNPC)的完整流程,特别聚焦于SPWM调制策略的配置技巧。通过模块拆解、参数设置和波形优化的三步法,配合实操截图和典型参数表,帮助新手快速掌握多电平逆变器的建模与仿真技能,适用于电力电子学习和项目开发。

weixin_30664051的博客 284

ESP32-S3开发环境避坑指南:VS Code+ESP-IDF离线安装全流程(附国内镜像加速)

本文提供了一份详细的ESP32-S3开发环境离线安装指南,重点解决网络依赖问题。通过整合国内镜像加速,手把手教你完成VS Code、ESP-IDF框架、工具链及Python依赖的本地化部署,实现稳定、可重复的开发环境搭建,大幅提升IoT开发效率。

peach的博客 961

爱上开源之golang入门至实战第三章-性能分析-分析数据

我们使用上面的两种方法采集到运行的golang程序的性能数据样本后,下面就可以用我们第一步,安装的pprof工具来查看性能数据了, pprof可视化分析工具,主要是对样本数据文件进行解析,提供解析后的性能数据给我查看。现在我们通过一个实例来详细的介绍一下性能分析的过程。 通过pprof的来查看笔者的一款基于fasthttp服务的性能数据由于是一个非http底层的服务,fasthttp本身有兼容pprof的实现方式,但是笔者简单的还是通过另其一个单独的http服务来实现;仅仅只是为了演示而已;在真实的场景里,

683

Unity2D像素刀光实现:粒子方向控制与像素级渲染规范

像素风游戏中的刀光特效并非普通粒子动画,而是需严格遵循像素艺术原理的视觉暂留模拟。其核心在于将‘瞬时切割感’转化为程序可执行的渲染逻辑:通过禁用纹理滤波保障1:1像素锐度,绑定刀锋向量控制粒子运动方向,限定≤0.15秒生命周期匹配人眼暂留阈值,并采用Stretched Billboard实现动态拉伸拖影。该方案兼顾美术语义(如直劈、横扫、突刺)与工程约束(Sorting Layer分层、对象池复用、单粒子GPU优化),广泛适用于Unity2D平台的动作反馈系统,尤其适配《空洞骑士》《死亡细胞》类高节奏像素R

weixin_32390647的博客 281

Go性能分析工具pprof详解

pprof是Go官方提供的性能分析工具,可以分析程序的运行情况,并且提供可视化的功能。本文主要涉及pprof的使用和具体示例的讲解。

nil 1万+

2025-08-19利用opencv检测图片中文字及图片的坐标

该代码实现了图片中中文文本的检测与位置计算功能。主要使用CnOcr库进行OCR识别,结合OpenCV和PIL库处理图像。功能包括:1)检测图片中的中文文本及位置坐标;2)计算每个文本的像素宽度和高度;3)在原图上绘制文本边界框并标注识别结果。代码通过put_chinese_text函数解决中文显示问题,最终输出各文本内容、坐标位置及尺寸信息。适用于需要获取图片中文字精确位置的应用场景。

m0_58149406的博客 394

IBIS模型中的Pullup和Pulldown曲线详解:如何避免信号完整性设计中的常见错误

本文深入解析IBIS模型中Pullup和Pulldown曲线的关键作用,揭示其在信号完整性设计中的黄金法则。通过详细分析曲线特性、常见误区及验证方法,帮助工程师避免设计错误,优化高速PCB设计。文章还展示了曲线数据在动态终端匹配、串扰预测和电源完整性分析中的高级应用,提升设计效率和可靠性。

weixin_30275415的博客 450

一文搞懂pprof

pprof是GoLang程序性能分析工具,prof是profile(画像)的缩写,用pprof我们可以分析下面9种数据真正分析时常用4种CPU Profiling:CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况,可确定应用程序在主动消耗 CPU 周期时花费时间的位置Memory Profiling:内存分析,在应用程序进行堆分配时记录堆栈跟踪,用于监视当前和历史内存使用情况,以及检查内存泄漏Block Profiling:阻塞分析,记录 goroutine 阻塞等待同步(包括

5834

矩阵奇异值分解算法(SVD)的导数 / 灵敏度分析

设矩阵X∈Rm×nX∈Rm×nXUΣV⊤XUΣV⊤U∈Rm×mU∈Rm×m为左奇异向量矩阵;V∈Rn×nV∈Rn×n为右奇异向量矩阵;Σdiag⁡σ1σ2σrΣdiagσ1​σ2​σr​为奇异值对角阵(rrank⁡XrrankX我们关心:当XXX发生微小扰动dXdX时,UΣVUΣV如何变化?dXdUΣV⊤dX。

qq_36812406的博客 1750

golang pprof笔记

pprof导入 import _ "net/http/pprof" go func() { log.Println(http.ListenAndServe(":6060", nil)) }() fmt.Printf("pprof start!") 内存使用情况 go tool pprof --text http://localhost:6060/debug/pprof/heap

weixin_45109984的博客 263

YOLOv12改进策略【独家融合改进】| SPD-Conv+PPA 再次提升模型针对小目标的特征提取能力

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 1026

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

golang入门笔记——pprof性能分析

golang性能分析工具pprof的8个指标1.性能分析的5个方面:CPU、内存、I/O、goroutine(协程使用情况和泄漏检查)、死锁检测以及数据竟态分析2.两种程序性能指标采集pprof开启后,每隔一段时间(10ms)就会收集下当前的堆栈信息,获取各个函数占用的CPU以及内存资源;最后通过对这些采样数据进行分析,形成一个性能分析报告。3.交互式终端性能分析。

qq_43716830的博客 1437

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

go tools pprof 快速使用笔记

目标:快速安装 + 成功使用上,主要是应对工作当中突然需要使用这个进行分析,并且之前没用过的情况 安装 1.首先安装go并配置环境 go version 判断是否成功 2.安装go tools 到github上下载go tools(https://github.com/golang/tools%E3%80%82%E8%A7%A3%E5%8E%8B%E8%AF%A5%E6%96%87%E4%BB%B6%EF%BC%8C%E5%B9%B6%E5%B0%86%E6%96%87%E4%BB%B6%E5%A4%B9%

分布式存储学习 1184

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

go笔记-pprof使用

go tool pprofhttp://localhost:6060/debug/pprof/profile go tool pprofhttp://localhost:6060/debug/pprof/heap go tool pprofhttp://localhost:6060/debug/pprof/block go tool pprofhttp://localhost:60...

weixin_30758821的博客 251

golang学习笔记-pprof性能分析1

前言 使用pprof和Graphviz结合来分析golang程序的性能问题。 1、pprof golang官方用来做监控分析的库,一般都是pprof,我们这里使用的net/http/pprof可以做到直接看到当前web服务的状态,包括cpu,内存等的使用情况。 2、Graphviz Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实...

知识就是生产力 1886

golang学习笔记-pprof性能分析2

前言 golang自带非常强大的性能分析工具,它可以在Go程序的运行中以精致的细节显示所有运行时事件,今天我们就了解一下go tool trace的强大之处。 一、概述 go tool trace 显示了非常之多的信息,为了简单起见,我们先概括的看一下他显示了些什么,下面是我生成的所有trace目录,具体的如图上所示,我们逐个分析。 二、详细 1、view trace 打开一个view trac...

知识就是生产力 1426

golang代码笔记 --pprof的基本使用和程序性能分析

背景 由于最近线上服务业务量正大暴露出一些性能问题(CPU比日常翻倍、内存释放过程不如预期),所有,不得不借助golang提供的系列工具来分析,帮助快速定位问题代码段,进而优化代码逻辑的(加深对语言特性的理解); 主要内容 pprof工具的使用 trace日志信息 1. pprof工具的使用 主要package: // 性能分析基础包 "runtime/pprof" // web封装 “net...

villare的博客 638

go语言学习笔记 — go工具(7):使用go pprof,性能分析,发现代码性能问题的具体位置

go pprof可以帮助开发者快速定位与分析各种go程序的性能问题,如CPU消耗、内存分配和阻塞分析。 性能分析使用runtime.pprof包,嵌入到待分析go程序的入口和结尾处。runtime.pprof包在程序运行时进行每秒100次采样,最少采样1秒,然后把生成的数据导出,让开发者写入文件或在其他媒介上分析。 go pprof配合Graphviz图形化工具,可以把runtime.pprof包...

yjk13703623757的博客 400

go语言学习笔记 — 基础 — go工具(6):性能分析,发现代码性能问题的具体位置 —— go pprof

go pprof可以帮助开发者快速定位与分析各种go程序的性能问题,如CPU消耗、内存分配和阻塞分析。 性能分析使用runtime.pprof包,嵌入到待分析go程序的入口和结尾处。runtime.pprof包在程序运行时进行每秒100次采样,最少采样1秒,然后把生成的数据导出,让开发者写入文件或在其他媒介上分析。 go pprof配合Graphviz图形化工具,可以把runtime.pprof包生成的数据转换成PDF,来展示程序性能分析报告。 安装第三方图形化显式分析工具(graphviz) 官网:www

yjk13703623757的博客 287

Golang知识笔记

参考文献:https://zhuanlan.zhihu.com/p/139472538。

qq_48146525的博客 823

LLC谐振变换器设计实战:从半桥匝比计算到满载掉压排查

软开关技术是隔离式大功率电源实现高效率的关键。相比硬开关拓扑中开关管在电压电流交叠区承受损耗,LLC谐振变换器利用谐振槽的电流与电压相位关系,在死区时间内实现原边开关管ZVS零电压开通、副边整流管ZCS零电流关断,从根本上降低了开关损耗,也让磁性元件的寄生参数得以充分利用。PFC与LLC的组合在服务器电源、充电桩模块和车载OBC中尤为常见,前级稳定母线电压,后级通过变频控制实现宽负载范围的高效稳压。实际工程中,半桥LLC的变压器匝比计算、K值与Q值选取直接决定满载输出能力,稍有不慎就会出现满载掉电压、开关管

weixin_34406086的博客 375

开源项目推荐:DataDog go-profiler-notes

DataDog go-profiler-notes 是一个开源项目,旨在帮助 Go 开发者更好地理解和运用 Go 语言的性能分析工具。该项目主要由 Go 语言编写。 ## 项目基础介绍 该项目由 felixge 创建,目前是 DataDog 公司的一名员工,专注于 Go 语言的持续性能分析工作。项目包含了 felixge 对各种 Go 性能分析方法的深入研究,包括 pprof 工具、堆分析、协...

gitblog_00589的博客 714
上一篇: fabric同步文件
下一篇: centos 7 使用iso来做源
erlang_hell
博客等级 码龄14年 57粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值