【问题标题】:How to space out influxdb continuous query execution?如何间隔 influxdb 连续查询执行?
【发布时间】:2020-10-21 23:48:38
【问题描述】:

我有许多 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 的调试工具方面获得建议也很棒。谢谢!

【问题讨论】:

  • 你用的是哪个版本的influxdb?
  • 如果您想了解更多详情,请告诉我。

标签: influxdb influxql


【解决方案1】:

@Rajan - 几个 cmets:

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

【讨论】:

    猜你喜欢
    • 2020-08-02
    • 1970-01-01
    • 2018-07-12
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 2018-11-23
    • 1970-01-01
    相关资源
    最近更新 更多