从症状到指标

当你只看吞吐时,GC 可能“看起来没问题”;一旦看 p99,就会发现 stop-the-world 和 assist 在放大尾延迟。

预算化方法

  1. 先定义延迟预算:例如 p99 < 80ms。
  2. 反推可接受 GC 时间占比。
  3. 约束对象分配速率和堆增长上限。

调优抓手

  • 降低瞬时分配:对象复用、批量编码。
  • 控制堆目标:结合 GOMEMLIMIT 与容器 limit。
  • 拆分热点路径:让大对象远离高频请求路径。

必看图表

  • GC pause 分位数。
  • alloc rate 与 mutator utilization。
  • heap goal 与实际 heap 的偏差。

小结

GC 调优不是“追求最少回收”,而是“在业务延迟预算内稳定运行”。预算先行,参数才有方向。