如何间隔influxdb连续查询执行?

时间:2020-10-21 23:48:38

标签: influxdb influxql

我有很多influxdb连续查询(CQ),用于多次在一段时间内对数据进行降采样。一方面,执行连续查询时,负载变得很高,并且influxdb耗尽了内存。

说我有10个CQ,所有10个CQ一次在influxdb中执行。这会严重影响内存。我不确定是否有任何方法可以均匀地间隔开一个CQ或在执行每个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中使用调试工具的建议也很棒。谢谢!

1 个答案:

答案 0 :(得分:0)

@Rajan-一些评论:

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