这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
前言
本文主要包括性能优化简介、性能分析工具pprof、性能调优案例三个部分。
性能优化原则
- 要依靠数据而不是猜测
- 要定位最大瓶颈而不是细枝末节
- 不要过早优化
- 不要过度优化
性能优化工具pprof
pprof是用于可视化和分析性能分析数据的工具,它可以知道应用在什么地方耗费了多少CPU、Memory。
pprof是一个强大的性能分析工具,可以捕捉到多维度的运行状态的数据,Go在语言层面集成了profile采样工具,在程序运行过程中可以获取cpu、heap、block、traces等执行信息,这些会涉及到runtime/pprof、net/http/pprof等包,获取profile数据最有两种形式:web形式与profile文件生成形式。
性能调优案例
简介:
介绍实际业务服务性能优化的案例;
对逻辑相对复杂的程序如何进行性能调优;
主要分为以下三个方面:
- 业务服务优化
基本概念:
- 服务:能单独部署,承载一定功能的程序
- 依赖:Service A的功能实现依赖,Service B的响应结果,称为Service A依赖Service B
- 调用链路:能支持一个接口请求的相关服务集合及其相互之间的依赖关系
- 基础库:公共的工具包、中间件
流程:
- 建立服务性能评估手段
- 分析性能数据,定位性能瓶颈
- 重点优化项改造
- 优化效果验证
- 进一步优化,服务整体链路分析
- 编辑器&运行时优化
总结
- 性能调优
-
- 要依靠数据不是猜测
- 性能分析工具pprof
-
- 熟练使用pprof工具排查性能问题并了解其基本原理
-
- 通过pprof可以方便快捷的排查代码中出现的CPU、内存、堆栈、协程、block、锁等各个方面的问题。
- 性能调优
-
- 保证正确性
-
- 定位主要瓶颈