共同事件契约
使这些查询可重用的字段
- timestamp_utc、job_id、job_name、queue_name 和状态
- scheduled_at、started_at、completed_at、duration_ms 和尝试
- error_type、worker_name、item_count 和释放
SQL 之前的定义
查询无法为您做出的决定
- 1选择一个标识符来连接同一逻辑作业的每次尝试。
- 2记录终端状态,以便停滞的作业查询不会标记已完成的工作。
- 3在设置阈值之前,将队列等待与执行时间分开。
推荐顺序
先建立检测,然后诊断
分析模式
让结果解释决定
建立工作生命周期模型
保持计划、开始、重试、完成、失败和丢弃的结果不同,以便一个查询可以重建每个逻辑作业。
将库存与流量分开
独立于每个时间段内创建和解决的作业来衡量当前的积压工作。
持续延误警报
使用队列年龄、连续错过的计划或重复重试,而不是单个暂时的工作错误。
完整的查询示例
复制查询,然后验证假设
入门job_runs
测量后台作业重试和失败率
通过比较成功的运行、重试、失败和尾部持续时间来查找不可靠的作业。
哪些后台作业消耗的重试次数最多或仍然失败?
查看 SQL 和结果中级job_events
使用 SQL 查找停滞的后台作业
连接作业开始和完成事件以识别超出其预期完成窗口的工作。
哪些作业已启动但从未产生终止事件?
查看 SQL 和结果入门job_runs
按作业测量队列等待时间
将队列中等待的时间与执行持续时间分开,并按作业名称比较 p50 和 p95 延迟。
哪些工作在工人开始之前等待的时间最长?
查看 SQL 和结果中级job_events
测量死信队列增长
比较死信的创建和解决以查找累积不可恢复工作的队列。
哪些队列添加死信作业的速度比解决死信作业的速度快?
查看 SQL 和结果中级cron_runs
检测错过的 Cron 计划
将连续的 cron 运行事件与每个计划间隔进行比较,以查找延迟或丢失的执行。
哪些预定作业的运行时间晚于记录的时间间隔?
查看 SQL 和结果中级job_attempts
检测后台作业重试风暴
查找重复作业尝试造成不成比例的队列工作和失败的时间段。
目前哪些工作类型在重试上花费的工作量最多?
查看 SQL 和结果