跳至主要內容
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 金鑰