性能优化分析工具 | 青训营笔记

96 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

年后忙完开始补课!!!

性能分析工具pprof的性能简介

image.png

工作原理

工作原理从过程上来说包括两个部分:性能样本数据采集和样本数据分析。

1、性能样本数据采集

在性能样本数据采集过程中,pprof 搜集被分析程序在运行时的一系列的性能概要信息的采样数据,并根据产生的采样数据生成 pprof 可视化工具可以解析的数据格式。

2、性能样本数据分析

pprof 工具本身提供了命令行工具,可以对采集到的样本数据进行可视化和性能分析。

对于 Golang 程序来说,主要关注下几方面的性能指标:

CPU 使用情况

内存使用情况

导致阻塞(Block)的同步原语情况

goroutine 的使用情况

页面介绍

功能代码如下

func main() {
   log.SetFlags(log.Lshortfile | log.LstdFlags)
   log.SetOutput(os.Stdout)

   runtime.GOMAXPROCS(1)
   runtime.SetMutexProfileFraction(1)
   runtime.SetBlockProfileRate(1)

   go func() {
      if err := http.ListenAndServe(":6060", nil); err != nil {
         log.Fatal(err)
      }
      os.Exit(0)
   }()

   for {
      for _, v := range animal.AllAnimals {
         v.Live()
      }
      time.Sleep(time.Second)
   }
}

简单的看一下main.go文件

image.png

运行pprof后的页面

image.png

页面展示的信息分别为:

image.png

点进去看看allocs:

image.png

pprof实战

排查实战

调用任务管理器看看pprof的cpu占用情况

image.png

可以说是相当的高

使用 go tool pprof 来排场一下:

go tool pprof http://localhost:6060/debug/pprof/profile

image.png

使用top命令来排查占用cpu较高的调用:

image.png

很明显,CPU 占用过高是 github.com/wolfogre/go-pprof-practice/animal/felidae/tiger.(*Tiger).Eat 造成的。

每列指标的含义:

image.png

课程案例问题:

image.png

回答:

image.png

list命令

根据指定的正则表达式查找代码行

image.png

image.png

web命令

image.png

内存排查

image.png

协程排查

image.png top

image.png list

image.png

锁排查

image.png 后面的命令改一下即可

阻塞排查

image.png

继续使用top list web

image.png

引用

本文一些内容来自:

原文链接:blog.csdn.net/luduoyuan/a…

课本:blog.wolfogre.com/posts/go-pp…

字节内部课:后端入门 - Go语言原理与实践