-
Notifications
You must be signed in to change notification settings - Fork 25.6k
Closed
Labels
:Analytics/AggregationsAggregationsAggregations:PerformanceAll issues related to Elasticsearch performance including regressions and investigationsAll issues related to Elasticsearch performance including regressions and investigationsTeam:AnalyticsMeta label for analytical engine team (ESQL/Aggs/Geo)Meta label for analytical engine team (ESQL/Aggs/Geo)Team:PerformanceMeta label for performance teamMeta label for performance team
Description
In the method of ChildMemoryCircuitBreaker.addEstimateBytesAndMaybeBreak(), the limit() method would do while loop atomically compare and set the used value.
when we test the high qps query to ES-node, the major cost is ChildMemoryCircuitBreaker.limit() which cause to AggregationPhase.preProcess()'s cost is extremely high
If data node receive high qps complicated search request body, and data-node will be busy to create aggregator, and it will lead to SumAggregator.<init>, lead to BigArrays.newDoubleArray() and lead to BigArrays.adjustBreaker(), finally call breaker.addEstimateBytesAndMaybeBreak and ChildMemoryCircuitBreaker.limit()
Metadata
Metadata
Assignees
Labels
:Analytics/AggregationsAggregationsAggregations:PerformanceAll issues related to Elasticsearch performance including regressions and investigationsAll issues related to Elasticsearch performance including regressions and investigationsTeam:AnalyticsMeta label for analytical engine team (ESQL/Aggs/Geo)Meta label for analytical engine team (ESQL/Aggs/Geo)Team:PerformanceMeta label for performance teamMeta label for performance team