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都会卡死,内存监控:
InfluxDB使用Flux函数aggregateWindow会占用大量内存_第1张图片
虚拟机分配内存直接用完,虚拟内存也疯狂读写,磁盘用量很大:
InfluxDB使用Flux函数aggregateWindow会占用大量内存_第2张图片

使用下面的等效脚本就不会出现这种问题,而且很快,内存占用和运行脚本前基本没有什么变化

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)

你可能感兴趣的:(InfluxDB使用Flux函数aggregateWindow会占用大量内存)