Skip to content
返回运维与 SRE

资源优化

优化资源请求/限并右调服务以无失余量砍成本。

为什么

请求 4 CPU 和 2GB 内存但用 0.5 CPU 和 200MB 的服务超配 8x — 且 $50/pod/月、50 pod 年浪 $25k。右调(请求设 p95 用 + 20% 余量、限设 p99 * 2)砍浪同时保尖峰余量。陷阱是无数据右调 — 猜"可能 1 CPU"留你要么超(浪)要么欠(OOM)。用指标:过去 30 天 p95 和 p99 CPU/内存、请求设 p95 + 余量、限设 p99 * 2(或若 OOMKilled 比节流糟则移限)。这是季度练习:随代码变用漂,6 月前右调的服务现可能超配。季度右调的团队报无任何余量失成本降 30-50%,因他们付实际用非猜。

何时使用

所有服务季度、大代码变后、成本超预算时。

如何做

1. 按服务收 30 天用指标
   - CPU 和内存用,p50/p95/p99,每 pod
   - 用指标服务器或监控工具(Datadog、Grafana)
   - 30 天捕周模式和偶发尖峰

2. 请求设 p95 用 + 余量
   - requests.cpu = p95(cpu) * 1.2   (20% 余量)
   - requests.memory = p95(memory) * 1.3  (30% 余量;内存少突发)
   - 请求定调度;设太高浪集群资源

3. 慎设限(或移)
   - limits.cpu = p99(cpu) * 2  (允突发;CPU 节流优雅)
   - limits.memory = p99(memory) * 1.5  (OOMKilled 非优雅;设高或移)
   - 若 OOMKilled 致过事件 → 移内存限(让节点处理)

4. 右调副本和 HPA
   - 若 p95 CPU 是请求 10% → 超配;降请求或减副本
   - 若 HPA 从不扩超 min → min 太高;降它
   - 若 HPA 总在 max → max 太低;提它(或修瓶颈)

5. 右调后验
   - 部新请求/限,看 1 周
   - 无 OOMKilled?无 CPU 节流?延迟 SLO 内?→ 右调成
   - 若问题 → 回滚并重查(你用坏数据或错余量)

示例

# 右调 checkout(30 天指标):
#   CPU:p50 0.2、p95 0.5、p99 0.8  (核)
#   内存:p50 200MB、p95 400MB、p99 600MB

# 当前(超配):
resources:
  requests: { cpu: "2", memory: "2Gi" }   # CPU 4x 超、内存 5x
  limits:   { cpu: "4", memory: "4Gi" }

# 右调:
resources:
  requests:
    cpu: "0.6"      # p95(0.5) * 1.2 = 0.6
    memory: "520Mi" # p95(400) * 1.3 = 520
  limits:
    cpu: "1.6"      # p99(0.8) * 2 = 1.6(CPU 节流优雅)
    # 内存限移 — OOMKilled 比节点压力糟

# 成本省:
#   前:50 pod × 2 CPU × $50/CPU/月 = $5,000/月
#   后:50 pod × 0.6 CPU × $50/CPU/月 = $1,500/月
#   省:$3,500/月 = $42k/年(70% 降,无余量失)

# HPA 右调:
#   当前:min 10、max 50。HPA 从不超 12。
#   → min 5(降基线)、max 30(降封;若撞 30 修瓶颈)
#   → 多省 5 pod × 0.6 CPU × $50 = $150/月

# 验(1 周后):
#   OOMKilled:0  ✅
#   CPU 节流:<0.1%  ✅
#   p99 延迟:450ms(SLO 500ms)  ✅
#   → 右调成

常见问题

  • ⚠无数据右调 — 猜"1 CPU"留你要么超(浪)要么欠(OOM);用 30 天 p95/p99 指标。
  • ⚠内存限太低 — 突发时 OOMKilled 丢在飞请求;设高或移(OOM 比节点压力糟)。
  • ⚠一次右调永不重查 — 用随代码变漂;季度重右调。
  • ⚠右调请求非副本 — 50 pod 每 0.6 CPU 仍 30 CPU;若 p95 0.5 你需 5 pod 非 50。

最佳实践

  • ✓收 30 天每 pod p50/p95/p99 CPU 和内存;请求设 p95 + 20% 余量、限设 p99 * 2(或若 OOMKilled 险则移内存限)。
  • ✓也右调副本和 HPA:若 p95 CPU 是请求 10% 则降请求或减副本;若 HPA 从不超 min 则降 min。
  • ✓右调后验:看 1 周 OOMKilled、CPU 节流、SLO 破;若问题现则回滚。
  • ✓季度和大代码变后重右调;用漂,6 月前右调的服务现可能超配。