跳转到内容
← 返回 Cosmos DB 概览
Killer #6

Throttling Root Cause Analyzer

当 429 命中时,DBA 需要知道是哪个 query、哪个 partition、什么时间引起的。今天是交叉 Azure Monitor + Log Analytics 的手动侦探。RCA 获取每个 429s burst,并与 window 内 ±N 分钟执行的 queries(来自 Query Cost Inspector)进行关联,按累积 RU 对 suspects 进行排名,并生成置信度得分 + 文本 rationale。

它在应用中的位置: Tools → Cosmos DB → Throttling Root Cause Analyzer

它做什么

  • 从 MetricsBridge(Azure Monitor 或 CloudWatch)拉取 429 事件。
  • 对于每个 burst,在 Query Cost Inspector 中搜索 ±N 分钟(可配置)内的 queries。
  • 按 shape 分组,按累积 RU 排名。
  • 置信度得分 = top shape 的 RU 占 window 总 RU 的比例。
  • 自动 rationale:high-frequency vs single-expensive vs many-shapes 重合。

分步

  1. 1

    打开 pane

    Tools → Cosmos DB → Throttling Root Cause Analyzer。

  2. 2

    调整 window

    默认 5 分钟。如果 workload 有长模式,增加到 10-15;如果想要手术式关联,减少到 2。

  3. 3

    刷新 / 等待轮询

    每 60s 拉取 429s。很快出现带 429s 的 top 20 windows 的表格。

  4. 4

    调查 suspects

    "Why" 列有简短 rationale。"Confidence" 列说明有多确定。>70% red = 几乎确定。

  5. 5

    采取行动

    Top suspect shape → 带到 WHAT-IF Lab → 测试索引 → 应用。

真实用例

凌晨 4 点 bug 检测

凌晨 4 点 PagerDuty 告警:429 spike。DBA 打开 RCA,看到 window 04:02-04:07 有 187 throttles + shape `find({orgId, status: "pending"})` 87% 置信度。batch job 中的 bug。20 分钟内修复。

准备好在您的 Cosmos 账户上查看了吗?下载 NoSqlStudio下一个 → Diagnostic Logs(KQL)