From 81b8811cf4b64d2933e70eb8f759248c1f68b0c4 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Wed, 29 Apr 2020 00:18:47 +0300 Subject: [PATCH] app/vmselect/promql: remove `-search.maxPointsPerTimeseries` command-line flag Limit the estimated time series count after aggregation with grouping by the number of source time series. --- app/vmselect/promql/eval.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/vmselect/promql/eval.go b/app/vmselect/promql/eval.go index 3eb3672430..99ee0d99b1 100644 --- a/app/vmselect/promql/eval.go +++ b/app/vmselect/promql/eval.go @@ -686,6 +686,10 @@ func evalRollupFuncWithMetricExpr(ec *EvalConfig, name string, rf rollupFunc, timeseriesLen *= 1000 } } + // The maximum number of output time series is limited by rssLen. + if timeseriesLen > rssLen { + timeseriesLen = rssLen + } } rollupPoints := mulNoOverflow(pointsPerTimeseries, int64(timeseriesLen*len(rcs))) rollupMemorySize := mulNoOverflow(rollupPoints, 16) @@ -695,7 +699,7 @@ func evalRollupFuncWithMetricExpr(ec *EvalConfig, name string, rf rollupFunc, return nil, fmt.Errorf("not enough memory for processing %d data points across %d time series with %d points in each time series; "+ "possible solutions are: reducing the number of matching time series; switching to node with more RAM; "+ "increasing -memory.allowedPercent; increasing `step` query arg (%gs)", - rollupPoints, rssLen*len(rcs), pointsPerTimeseries, float64(ec.Step)/1e3) + rollupPoints, timeseriesLen*len(rcs), pointsPerTimeseries, float64(ec.Step)/1e3) } defer rml.Put(uint64(rollupMemorySize))