InfluxDB使用Flux函数aggregateWindow会占用大量内存
aggregate函数定义
aggregateWindow = (every, fn, columns=["_value"], timeColumn="_stop", timeDst="_time", tables=<-) =>
tables
|> window(every:every)
|> fn(column:column)
|> duplicate(column:timeColumn, as:timeDst)
|> window(every:inf, timeColumn:timeDst)
使用示例:查询的数据输入只有1万条。
db = from(bucket: "mydata/autogen")
|> range(start: -7d)
|> filter(fn: (r) => r._measurement == "msd" and (r._field == "current"))
db
|> aggregateWindow(every: 50ms,fn:mean)
运行后,整个docker都会卡死,内存监控:

虚拟机分配内存直接用完,虚拟内存也疯狂读写,磁盘用量很大:

使用下面的等效脚本就不会出现这种问题,而且很快,内存占用和运行脚本前基本没有什么变化
db = from(bucket: "mydata/autogen")
|> range(start: -7d)
|> filter(fn: (r) => r._measurement == "msd" and (r._field == "current"))
db
|> window(every: 50ms)
|> mean()
|> duplicate(column:"_stop",as:"_time")
|> window(every:inf)

浙公网安备 33010602011771号