← 返回 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
打开 pane
Tools → Cosmos DB → Throttling Root Cause Analyzer。
- 2
调整 window
默认 5 分钟。如果 workload 有长模式,增加到 10-15;如果想要手术式关联,减少到 2。
- 3
刷新 / 等待轮询
每 60s 拉取 429s。很快出现带 429s 的 top 20 windows 的表格。
- 4
调查 suspects
"Why" 列有简短 rationale。"Confidence" 列说明有多确定。>70% red = 几乎确定。
- 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)