标准答案

  1. 先看请求 P99、错误率、吞吐、goroutine、内存、GC 和下游等待趋势。
  2. CPU profile 找计算热点,heap 找存活和分配,goroutine 找泄漏和阻塞,mutex/block profile 找竞争。
  3. trace 适合观察调度、网络、GC 和 syscall 时间线,但采集成本更高。
  4. 采集后对照版本、流量和配置验证,修复要重新压测而不是只看单次 profile。

题目解析

先用指标确认影响和时间窗口,再用 CPU、heap、goroutine、mutex/block profile 或 runtime trace 定位。每种工具只回答部分问题,不能用 CPU 图解释内存泄漏或业务错误。

采样要关联 Go 版本、流量、数据分布、配置和下游等待。trace 成本更高,应限时采集;修复后用相同负载验证 P99、吞吐、GC、goroutine 和资源释放。

pprof 和 profile 文件可能包含代码、路径和内存内容,诊断接口必须在管理面、鉴权和网络隔离下开放,并设置保存期限。

常见误区

  • 误区:线上暴露无鉴权 pprof。改正:放在受控管理面,限制访问、鉴权、采集时间和文件保存。
  • 误区:只看 CPU profile 排查所有问题。改正:按问题选择 heap、goroutine、锁、阻塞和 trace 证据。
  • 误区:采集文件没有脱敏和访问控制。改正:评估敏感信息,安全传输和按需保留。

作者信息