跳转到内容
Telemetry
后台任务 SQL查询示例

按作业测量队列等待时间

将队列中等待的时间与执行持续时间分开,并按作业名称比较 p50 和 p95 延迟。

入门job_runs已审核 2026-07-27测试用 阿帕奇 DataFusion 45.2.0

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

问题已回答

哪些工作在工人开始之前等待的时间最长?

当工作排队时,快速的工作人员仍然可能会产生缓慢的客户结果。队列等待和执行持续时间需要单独的字段和目标。

活动合约

查询期望的字段

字段类型为什么存在
timestamp_utcTimestamp运行完成时间。
job_nameUtf8稳定的逻辑作业名称。
queue_wait_msFloat64从计划到开始的毫秒数。
duration_msFloat64启动后的执行持续时间。
DataFusion SQL

复制查询

sql
SELECT
  job_name,
  COUNT(*) AS runs,
  approx_percentile_cont(queue_wait_ms, 0.50) AS p50_wait_ms,
  approx_percentile_cont(queue_wait_ms, 0.95) AS p95_wait_ms,
  approx_percentile_cont(duration_ms, 0.95) AS p95_run_ms
FROM job_runs
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY job_name
HAVING COUNT(*) >= 20
ORDER BY p95_wait_ms DESC;

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

查询结果

p95 按作业排队等待

报告生成的等待时间大约是 p95 运行时间的两倍。

job_namerunsp50_wait_msp95_wait_msp95_run_ms
generate_report3401,80044,20021,800
sync_subscription9804207,2008,400
send_email12,40080460930

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

p95 queue wait by job:来自 Measure Queue Wait Time by Job 示例结果的合成 p95_wait_ms 值的静态图表
确定性示例输出的可索引 SVG。下载它以获取带有归属的文章、操作手册或设计评论。

重现示例

下载公共装置

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

SQL 是如何工作的

  1. 1队列等待在工作安排时开始,在执行开始时结束。
  2. 2p50 到 p95 的差距将持续缓慢的队列与间歇性的积压区分开来。
  3. 3将 p95 等待时间与 p95 运行时间进行比较可以看出容量或作业代码是否是更大的贡献者。

需要决定的边缘情况

  • 使用一个时钟或 UTC 时间戳作为计划时间和开始时间。
  • 计划的 cron 延迟和队列延迟可能需要单独的字段。
  • 重试应保留尝试次数,以便可以隔离重复的工作。

推荐仪表板

  • 酒吧:p50和p95按工作等待
  • 趋势:p95 排队等候
  • 表:当前排队的最旧项目

警报指导

当 p95 等待超过多个完整存储桶的工作流程目标时发出警报。

读取警报设置

让查询示例发挥作用

相关埋点和指南

定义源数据

此分析的事件模式

继续分析

在真实事件中运行它

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

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

获取 API 密钥