Go 进阶 · 分布式爬虫实战
郑建勋
Go 语言技术专家,《Go 语言底层原理剖析》作者
15839 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 58 讲
Go 进阶 · 分布式爬虫实战
15
15
1.0x
00:00/00:00
登录|注册

39|性能分析利器:深入pprof与trace工具

你好,我是郑建勋。
这节课,我们来学习分析 Go 程序的利器:pprof 和 trace。

pprof 及其使用方法

先来看 pprof。pprof 用于对指标或特征的分析(Profiling)。借助 pprof,我们能够定位程序中的错误(内存泄漏、race 冲突、协程泄漏),也能对程序进行优化(例如 CPU 利用率不足等问题)。
Go 语言运行时的指标并不对外暴露,而是由标准库 net/http/pprof 和 runtime/pprof 来与外界交互。其中, runtime/pprof 需要嵌入到代码进行调用,而 net/http/pprof 提供了一种通过 HTTP 获取样本特征数据的便利方式。而要对特征文件进行分析,就得依赖谷歌推出的分析工具 pprof 了。这个工具在 Go 安装时就存在,可以用 go tool pprof 执行。
要用 pprof 进行特征分析需要执行两个步骤:收集样本和分析样本。
收集样本有两种方式。一种是引用 net/http/pprof,并在程序中开启 HTTP 服务器,net/http/pprof 会在初始化 init 函数时注册路由。
import _ "net/http/pprof"
if err := http.ListenAndServe(":6060", nil); err != nil {
log.Fatal(err)
}
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了Go语言程序性能分析利器pprof的使用方法,包括收集样本和分析样本的步骤,以及通过pprof进行堆内存分析的具体操作。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 进阶 · 分布式爬虫实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • Realm
    思考题: 单次执行占用很高的cpu和内存的函数,不一定是瓶颈。 调用非常频繁的函数,并且每次需要分配内存或者造成软中断,也可能形成瓶颈。
    2023-01-12归属地:浙江
    1
  • 公共账号
    pprof top后为什么会有负数出现
    2024-01-06归属地:陕西
  • 加油
    火焰图 : 框越长、颜色越深,代表当前函数占用 CPU 的时间越久。 —————— 这句话有问题哈,框越长,代表当前函数占用CPU的时间越久。但是和颜色无关,火焰图的颜色是随机的暖色调。
    2023-05-18归属地:广东
  • 徐海浪
    内存分配多和CPU耗时长,只能说明这个函数占用的资源多,还需要结合执行次数分析,计算平均每次执行时间和内存分配的情况。
    2023-01-17归属地:广东
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部