go语言性能调优实战 | 青训营

58 阅读2分钟

前言

在软件开发的过程中,我们常常追求卓越的性能和优化。然而,优化并非盲目猜测,而是依靠数据和事实的指引。正如在我们的项目中,我们不仅要依赖直观的感觉,更要依赖详实的数据来定位问题所在。这种数据驱动的方法可以让我们更加准确地找到问题的根本原因,而不是陷入细枝末节的纠结。

优化需要权衡时间、资源和效益。过度优化可能导致代码变得难以维护,甚至可能引入新的问题。我们应该在明确的数据支持下,有针对性地进行优化,不盲目地在每个细节上投入过多精力。

因此,在我们的项目中,让我们坚持依靠数据而不是猜测,定位最大瓶颈而不是细枝末节。同时,我们要保持冷静头脑,不要急于过早和过度优化。

性能分析工具 pprof

在Gin 框架中集成 pprof

  1. 导入 pprof 包: 首先,你需要在代码中导入 pprof 包。
  1. 注册 pprof 路由: 在 Gin 的路由中注册 pprof 的路由,以便访问各种性能分析数据。你可以在任何需要的地方注册,比如在 Gin 的路由初始化函数中

屏幕截图 2023-08-05 171056.png

使用 pprof 进行性能分析

启动项目之后 可以通过 Web 页面来查看指标情况

以下是一些常用的性能指标以及对应的命令行参数:

  1. 查看CPU使用情况:
```
ini
复制代码
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/profile"
```
  1. 查看内存分配情况:

    ini
    复制代码
    go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/heap"
    
  2. 查看阻塞概况:

    ini
    复制代码
    go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/block"
    
  3. 查看goroutine信息:

    ini
    复制代码
    go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/goroutine"
    
  4. 查看线程创建概况:

    ini
    复制代码
    go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/threadcreate"
    

如果打开对应的页面发现报错Could not execute dot; may need to install graphviz. 则需要安装 graphviz 并配置好环境变量。