火焰图与 pprof 性能瓶颈定位开发短记:复盘要保留原始采样条件 📅 2026/8/11 3:01:28 火焰图与 pprof 性能瓶颈定位开发短记复盘要保留原始采样条件性能复盘里最有价值的不是一张漂亮的火焰图而是它对应的采样条件。没有流量形态、二进制版本和采集窗口同一张图无法和下次故障比较也无法判断修复是否生效。先确定故障的边界哪个接口、哪个时间段、哪些实例、是否有批任务或下游抖动。随后保存 CPU、heap、goroutine 与 mutex profile并记录采样时长、采样频率、容器限制、请求量及部署版本。对 Go 程序profile 文件应和当时的可执行文件及符号信息一起归档。阅读火焰图时先问“这段时间在做什么”再问“哪个函数占得多”。CPU 热点可能只是高流量下正常的序列化开销heap 增长也可能来自预期的缓存预热。需要结合分配速率、GC 暂停、队列长度和错误日志形成一条能被反驳的假设。修复后使用同一组输入重跑采样并比较调用栈、延迟分位数和资源曲线。若某项指标改善而错误率上升就不应把它记录为成功。复盘文档至少要包含原始文件位置、采集命令、判断过程和仍未解决的问题这样下一位处理人才能沿着证据继续排查。不要将 profile 文件直接贴进公开工单。它可能含有内部路径和函数名工单里保留摘要、存储位置和访问人即可需要细看时再按权限申请原始文件。采样带来的额外开销也应记录。出现紧急故障时优先选择影响较小的采集方式并在恢复后补齐更完整的 profile而不是让诊断动作继续扩大服务压力。图形只服务于判断正文应写明具体调用链和证据位置。对采集时发生的部署、扩缩容或流量切换加上时间标记避免将环境变化错归为代码热点变化。