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

计算 p50、p95 和 p99 API 延迟

使用 DataFusion 兼容的百分位数 SQL 按端点比较中值和尾部延迟。

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

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

问题已回答

哪些端点的尾部延迟最差?

平均值隐藏了用户记得的慢速请求。比较 p50、p95 和 p99 可以揭示端点是否始终缓慢或具有由较小的请求集引起的长尾。

活动合约

查询期望的字段

字段类型为什么存在
timestamp_utcTimestamp请求完成时间(UTC)。
route_templateUtf8稳定的路线模板。
latency_msFloat64请求持续时间(以毫秒为单位)。
status_codeInt64HTTP 响应状态代码。
DataFusion SQL

复制查询

sql
SELECT
  route_template,
  COUNT(*) AS requests,
  approx_percentile_cont(latency_ms, 0.50) AS p50_ms,
  approx_percentile_cont(latency_ms, 0.95) AS p95_ms,
  approx_percentile_cont(latency_ms, 0.99) AS p99_ms
FROM api_requests
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
  AND status_code < 500
GROUP BY route_template
HAVING COUNT(*) >= 50
ORDER BY p95_ms DESC
LIMIT 10;

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

查询结果

按路线划分的 p95 延迟

导出请求的尾部最慢,典型情况和最坏情况性能之间的差距最大。

route_templaterequestsp50_msp95_msp99_ms
/api/reports/export50800800800
/api/projects/:id/sync50320320320
/api/search50120120120

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

p95 latency by route:来自 Calculate p50, p95, and p99 API Latency 示例结果的合成 p95_ms 值的静态图表
确定性示例输出的可索引 SVG。下载它以获取带有归属的文章、操作手册或设计评论。

重现示例

下载公共装置

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

SQL 是如何工作的

  1. 1approx_percentile_cont 使用 DataFusion 的 t-digest 实现,这对于大型事件表非常有效。
  2. 2过滤掉 5xx 响应使其成为成功请求延迟视图。当失败持续时间很重要时,创建单独的失败请求视图。
  3. 3p50 和 p95 之间的差异通常比单独的任何一个数字更有用:较大的差距表明间歇性的慢速路径。

需要决定的边缘情况

  • 在不保留路由上下文的情况下,不要将端点与根本不同的工作进行比较。
  • 流媒体路由和长期运行的导出可能需要单独的服务级别目标。
  • 将延迟保持在一致的单位并使用数字字段。

推荐仪表板

  • 分组条:p50_ms 和 p95_ms by route_template
  • 折线图:最慢路线随时间变化的 p95_ms
  • 表:路线 p99 以上的个人请求

警报指导

当大容量航线的 p95 在三个完整时间段内超过其服务目标时发出警报。

读取警报设置

让查询示例发挥作用

相关埋点和指南

定义源数据

此分析的事件模式

继续分析

在真实事件中运行它

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

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

获取 API 密钥