性能剖析与火焰图

用采样剖析定位热点代码:perf、async-profiler 等工具生成火焰图,按 CPU、内存或锁维度查看调用栈占比,先定位再优化。

流程

流程
1. 确认场景可复现,采集代表性负载下的样本
2. 生成火焰图:宽度=样本占比,颜色区分维度
3. 找自身占比高的函数(而非被调用的壳函数)
4. 优化后复采对比,验证收益
  • 准备代表性负载:请求比例与数据规模贴近生产
  • 选择维度:CPU 热点、内存分配、锁竞争,一次聚焦一个
  • 采样生成火焰图,自下而上找自身占用高的分支
  • 定位函数后核对代码路径与调用频次,评估优化空间
  • 修改后同负载复采,对比火焰图与指标变化
  • 把有效优化固化并回归,防止后续改动重新引入
采样剖析有观测误差,优化前后要用相同方法与负载复测,避免被噪声误导。

易错点

  • 凭经验猜测热点,优化后收益无法证实
  • 在非代表性负载下采样,结论不可用

数据来源与参考

  • 《性能之巅(第 2 版)》(Gregg):火焰图
  • Brendan Gregg 博客:Flame Graphs
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌