1

我有许多 influxdb 连续查询(CQ)用于在一段时间内多次对数据进行下采样。在某一时刻,负载变得很高,并且 influxdb 在执行连续查询时内存不足。

假设我有 10 个 CQ,所有 10 个 CQ 一次在 influxdb 中执行。这会严重影响内存。我不确定是否有任何方法可以均匀地间隔或在一个一个地执行每个 CQ 时有一些延迟。我的猜测是同时执行所有 CQ 会导致 influxdb 崩溃。所有 CQ 都在 influxdb 配置中指定。我希望有一种方法可以在流入配置中包含 CQ 之间的时间延迟。我不知道如何在配置中包含时间延迟。一个样本 CQ:

CREATE CONTINUOUS QUERY "cq_volume_reads" ON "metrics" 
BEGIN 
    SELECT sum(reads) as reads INTO rollup1.tire_volume FROM
    "metrics".raw.tier_volume GROUP BY time(10m),* 
END

而且我不知道这是否是解决问题的最佳方法。对此方法的任何想法或建议任何更好的方法都将不胜感激。在使用 influxdb 的调试工具方面获得建议也很棒。谢谢!

4

1 回答 1

0

@Rajan - 一些评论:

  • CQ的规范文档在此处。我建议的大部分内容都来自那里。
  • 你在使用反向引用吗?我看到您的示例 CQ 使用GROUP BY time(10m),*- * 通配符通常与反向引用一起使用。否则,我认为您不需要包含*来指示按所有标签分组 - 它应该已经按所有标签分组。
  • 如果您使用反向引用,则会为数据库中的每个测量运行 CQ。metrics这可能会同时执行很多 CQ,尤其是如果您以这种方式定义了许多 CQ。
  • 您可以设置偏移量,GROUP BY time(10m, <offset>)但这也会影响用于聚合函数的时间间隔(sum在您的示例中),因此如果您的偏移量为 1 分钟,则时间戳将是例如 13:11->13:21 而不是 13 之间的数据总和:10 -> 13:20。这将抵消执行,但可能不适用于您的下采样用例。从信号处理的角度来看,1 分钟的偏移不会改变下采样数据的有效性,但它可能会产生不希望的图形显示问题,具体取决于您正在执行的操作。我建议尝试这个选项。
  • 否则,您可以尝试减少下采样 CQ 的数量以减少内存压力或在更大的时间尺度(例如 20m)上下采样,或者最后增加 InfluxDB 可用的硬件资源。
  • 要管理内存使用,请查看这篇文章。1.8的调整不多,但也有一些。
于 2020-10-27T21:37:07.607 回答