Saltar al contenido
Telemetry
Fiabilidad de la API receta SQL

Medir la recuperación del límite de velocidad API 429

Mida la frecuencia con la que las solicitudes de velocidad limitada se recuperan en un intento posterior sin tratar cada reintento como una nueva solicitud.

Intermedioapi_attempt_eventsRevisado 2026-07-28Probado con Apache DataFusion 45.2.0

Revisado por el equipo de producto Telemetry en . Compatibilidad con SQL, contrato de eventos, resultados sintéticos y advertencias operativas. Revisar los estándares y la propiedad

Pregunta respondida

¿Las solicitudes que reciben HTTP 429 se recuperan correctamente después de volver a intentarlo?

La telemetría a nivel de intento puede hacer que una tormenta de reintentos parezca demanda. Este patrón primero colapsa los intentos en el resultado de una solicitud y luego mide cuántas solicitudes de velocidad limitada finalmente se recuperaron.

Contrato de evento

Campos que espera la consulta

CampoTipoPor que existe
timestamp_utcTimestampHora de finalización del intento en UTC.
route_templateUtf8Plantilla de ruta estable.
request_idUtf8Identificador compartido por el intento original y los reintentos.
attempt_numberInt64Secuencia de intento basada en uno.
status_codeInt64Estado HTTP devuelto para el intento.
retry_after_msInt64Retraso de reintento aplicado en milisegundos.
environmentUtf8Entorno de implementación.
DataFusionSQL

Copiar la consulta

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;

Esta consulta de solo lectura se planifica y ejecuta en una tabla escrita vacía con Apache DataFusion 45.2.0. El resultado de la muestra determinista es sintético y se revisa por separado; valide tipos de campos, umbrales y definiciones comerciales con sus propios datos. Lea la metodología de prueba.

Resultado de la consulta

Recuperación de solicitudes con tasa limitada

La búsqueda recupera dos de tres solicitudes de velocidad limitada; la exportación no se recupera en la ventana observada.

route_templaterequestsrate_limited_requestsrecovered_requestsrecovery_rate_pct
/api/search43266,67
/api/export2100

Salida de ejemplo sintético. Ejecute la consulta con su propio esquema de eventos y umbrales antes de utilizarla para decisiones operativas.

Rate-limited request recovery: gráfico estático de valores sintéticos de recovery_rate_pct del resultado del ejemplo Measure API 429 Rate-Limit Recovery
SVG indexable de la salida del ejemplo determinista. Descárguelo para ver un artículo, un runbook o una revisión de diseño con atribución.

Reproducir el ejemplo

Descargar el accesorio público

El paquete JSON incluye el contrato de evento escrito, reproducible filas de entrada, SQL exacto, resultado esperado, notas de revisión y versión del motor. El CSV contiene el resultado mostrado.

Cómo funciona el SQL

  1. 1El primer CTE crea un registro por solicitud lógica, lo que evita que los reintentos inflen el volumen de solicitudes.
  2. 2Una solicitud cuenta como recuperada solo cuando contiene un intento 429 y un intento exitoso.
  3. 3Mantener el recuento de solicitudes de tasa limitada junto al porcentaje hace visibles los resultados de bajo volumen.

Casos extremos para decidir

  • Utilice un identificador de solicitud lógica o de idempotencia que sobreviva a los reintentos.
  • Vincula la secuencia de reintento para que una solicitud que se complete después de que la ventana de informes no esté etiquetada permanentemente como fallida.
  • Registre las cancelaciones de clientes por separado del agotamiento de los reintentos.

Panel recomendado

  • Bares: recovery_rate_pct por ruta
  • Tendencia: rate_limited_requests y recovered_requests
  • Tabla: solicitudes agotadas con recuento de intentos y retraso de reintento

Guía de alerta

Alerta cuando el volumen con velocidad limitada es importante y la recuperación permanece por debajo del objetivo revisado de la ruta durante varios períodos.

Leer configuración de alerta

Pon la receta a trabajar

Instrumentación y guías relacionadas.

Continuar el análisis

Ejecútelo en eventos reales.

Crea una tabla, adapta los campos y guarda el resultado.

Comience gratis, envíe eventos estructurados y utilice el resultado de la consulta como un gráfico, un widget de panel compartido o una entrada de alerta.

Obtén una clave API