跳转到内容
Telemetry
API 可靠性 SQL查询示例

测量 API 429 速率限制恢复

测量速率限制请求在稍后尝试中恢复的频率,而不将每次重试都视为新请求。

中级api_attempt_events已审核 2026-07-28测试用 阿帕奇 DataFusion 45.2.0

审阅者 Telemetry产品团队 . SQL 兼容性、事件契约、合成输出和操作注意事项. 审查标准和所有权

问题已回答

收到 HTTP 429 的请求重试后能否成功恢复?

尝试级遥测可以使重试风暴看起来像需求。此模式首先将尝试折叠到一个请求结果,然后测量最终恢复的速率限制请求数。

活动合约

查询期望的字段

字段类型为什么存在
timestamp_utcTimestamp尝试完成时间(UTC)。
route_templateUtf8稳定的路线模板。
request_idUtf8原始尝试和重试共享的标识符。
attempt_numberInt64基于一的尝试序列。
status_codeInt64尝试返回 HTTP 状态。
retry_after_msInt64应用的重试延迟(以毫秒为单位)。
environmentUtf8部署环境。
DataFusion SQL

复制查询

sql
WITH request_outcomes AS (
  SELECT
    route_template,
    request_id,
    COUNT(*) AS attempts,
    MAX(CASE WHEN status_code = 429 THEN 1 ELSE 0 END) AS was_rate_limited,
    MAX(CASE WHEN status_code BETWEEN 200 AND 299 THEN 1 ELSE 0 END) AS succeeded
  FROM api_attempt_events
  WHERE timestamp_utc >= now() - INTERVAL '24 hours'
    AND environment = 'production'
  GROUP BY route_template, request_id
)
SELECT
  route_template,
  COUNT(*) AS requests,
  SUM(was_rate_limited) AS rate_limited_requests,
  SUM(CASE
    WHEN was_rate_limited = 1 AND succeeded = 1 THEN 1
    ELSE 0
  END) AS recovered_requests,
  100.0 * SUM(CASE
    WHEN was_rate_limited = 1 AND succeeded = 1 THEN 1
    ELSE 0
  END) / NULLIF(SUM(was_rate_limited), 0) AS recovery_rate_pct
FROM request_outcomes
GROUP BY route_template
ORDER BY rate_limited_requests DESC, route_template;

此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。

查询结果

限速请求恢复

搜索恢复三个限速请求中的两个;导出在观察到的窗口中没有恢复。

route_templaterequestsrate_limited_requestsrecovered_requestsrecovery_rate_pct
/api/search43266.67
/api/export2100

综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。

Rate-limited request recovery:来自 Measure API 429 Rate-Limit Recovery 示例结果的合成 recovery_rate_pct 值的静态图表
确定性示例输出的可索引 SVG。下载它以获取带有归属的文章、操作手册或设计评论。

重现示例

下载公共装置

JSON 包包含类型化事件契约, reproducible 输入行、确切的 SQL、预期输出、审阅注释和引擎版本。 CSV 包含显示的结果。

SQL 是如何工作的

  1. 1第一个 CTE 为每个逻辑请求创建一个记录,防止重试导致请求量膨胀。
  2. 2仅当请求同时包含 429 尝试和成功尝试时,才算为已恢复。
  3. 3在百分比旁边保留速率限制的请求计数可以使低容量结果可见。

需要决定的边缘情况

  • 使用在重试后仍然存在的幂等性或逻辑请求标识符。
  • 限制重试顺序,以便在报告窗口之后完成的请求不会永久标记为失败。
  • 记录客户端取消与重试耗尽分开。

推荐仪表板

  • 酒吧:recovery_rate_pct 按路线
  • 趋势:rate_limited_requests 和 recovered_requests
  • 表:已耗尽的请求以及尝试计数和重试延迟

警报指导

当速率限制的流量很重要并且恢复率低于路线的多个桶的审查目标时发出警报。

读取警报设置

让查询示例发挥作用

相关埋点和指南

继续分析

在真实事件中运行它

创建表,调整字段并保存结果

免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。

获取 API 密钥