【发布时间】:2018-10-21 14:58:30
【问题描述】:
我有一个可以在各种机器上运行作业的作业调度引擎。我有一个以流形式进入的待处理作业队列(通常至少有数千个作业等待执行)。我有一个算法可以在不同的机器上执行作业。
要跟踪的核心指标之一是作业被请求后多长时间会被安排执行(通常不到 5 分钟,但由于各种原因可能长达 1 小时)。
有没有办法绘制出使用 Prometheus + Grafana(或 prometheus 和 Redis 等其他解决方案的混合)的当前未分配作业的百分位数?我想知道什么是中位等待时间,即工作等待时间的 95% 和 99%。
问题是,在作业被安排执行之前,不会生成任何事件,我们等待的时间越长,作业将进入更高的存储桶。此外,由于作业可能需要非常不同的时间来安排(并非每个作业都相同),因此仅仅依靠过去几个作业需要多长时间来安排是错误的。
一种简单的方法是遍历所有待处理的作业并连续计算百分位数,但这会非常昂贵。
【问题讨论】:
标签: grafana prometheus job-scheduling