Go性能优化实战|青训营笔记8

98 阅读2分钟

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

前言

本文主要包括性能优化简介、性能分析工具pprof、性能调优案例三个部分。

性能优化原则

  • 要依靠数据而不是猜测
  • 要定位最大瓶颈而不是细枝末节
  • 不要过早优化
  • 不要过度优化

性能优化工具pprof

pprof是用于可视化和分析性能分析数据的工具,它可以知道应用在什么地方耗费了多少CPU、Memory。

pprof是一个强大的性能分析工具,可以捕捉到多维度的运行状态的数据,Go在语言层面集成了profile采样工具,在程序运行过程中可以获取cpuheapblocktraces等执行信息,这些会涉及到runtime/pprofnet/http/pprof等包,获取profile数据最有两种形式:web形式与profile文件生成形式。

image.png

性能调优案例

简介:

介绍实际业务服务性能优化的案例;

对逻辑相对复杂的程序如何进行性能调优;

主要分为以下三个方面:

  • 业务服务优化

基本概念:

  • 服务:能单独部署,承载一定功能的程序
  • 依赖:Service A的功能实现依赖,Service B的响应结果,称为Service A依赖Service B
  • 调用链路:能支持一个接口请求的相关服务集合及其相互之间的依赖关系
  • 基础库:公共的工具包、中间件

流程:

  • 建立服务性能评估手段
  • 分析性能数据,定位性能瓶颈
  • 重点优化项改造
  • 优化效果验证
  • 进一步优化,服务整体链路分析
  • 编辑器&运行时优化

总结

  • 性能调优
    • 要依靠数据不是猜测
  • 性能分析工具pprof
    • 熟练使用pprof工具排查性能问题并了解其基本原理
    • 通过pprof可以方便快捷的排查代码中出现的CPU、内存、堆栈、协程、block、锁等各个方面的问题。
  • 性能调优
    • 保证正确性
    • 定位主要瓶颈