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

90 阅读1分钟

性能优化分析工具

调优原则

  • 要依靠数据
  • 要定位最大瓶颈
  • 不要过早优化
  • 不要过度优化

性能分析工具pprof

  • 希望知道应用消耗了多少CPU,Memory
  • pprof提供了可视化和性能分析工具

实战

image.png

CPU

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

image.png

  • 命令:TopN,查看占用资源最多的函数

image.png

  • 指标介绍
    1. flat:函数本身耗时
    2. flat%:占用CPU时间占比
    3. sum%:上面每一行的flat%的总和
    4. cum:当前函数和调用函数的总时长
    5. cum%:cim占据CPU总时间的比例
  • 命令:list,根据指定的正则表达式查询代码行

image.png 可以看到对应的loop占用了最多的调用时间

  • 命令:web,调用关系可视化

注意安装对应的gvedit并且添加环境变量

image.png

定位并且修改后重新运行并查看

image.png

堆内存

go tool -http=:8080 "http://localhost:6060/debug/pprof/heap"

image.png

  • Top视图,类似与top命令 image.png
  • Source视图,类似list命令

image.png

image.png 指标介绍

  1. alloc_objects:程序累计申请的对象数
  2. alloc_space:程序当前持有的对象数
  3. inuse_objects:程序累计申请的内存大小
  4. inuse_space:程序当前占用的内存大小

goroutine——协程

goroutine泄露也会导致内存泄露

go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/goroutine"

火焰图

  • 从上倒下表示调用顺序
  • 每一块代表一个函数,越长代表耗时越多
  • 火焰图是动态的,支持点击块分析

image.png

go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/mutex"

image.png

image.png

标题:性能优化分析工具 - 掘金

网址:juejin.cn/course/byte…