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.
This commit is contained in:
Aliaksandr Valialkin 2020-04-29 00:18:47 +03:00
parent 408ade27a9
commit 81b8811cf4

View file

@ -686,6 +686,10 @@ func evalRollupFuncWithMetricExpr(ec *EvalConfig, name string, rf rollupFunc,
timeseriesLen *= 1000 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))) rollupPoints := mulNoOverflow(pointsPerTimeseries, int64(timeseriesLen*len(rcs)))
rollupMemorySize := mulNoOverflow(rollupPoints, 16) 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; "+ 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; "+ "possible solutions are: reducing the number of matching time series; switching to node with more RAM; "+
"increasing -memory.allowedPercent; increasing `step` query arg (%gs)", "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)) defer rml.Put(uint64(rollupMemorySize))