diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c12100b676..236b751f386 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Grafana Mimir +* [CHANGE] Querier: the CLI flag `-querier.minimize-ingester-requests` has been moved from "experimental" to "advanced". #7638 * [ENHANCEMENT] Store-gateway: merge series from different blocks concurrently. #7456 * [ENHANCEMENT] Store-gateway: Add `stage="wait_max_concurrent"` to `cortex_bucket_store_series_request_stage_duration_seconds` which records how long the query had to wait for its turn for `-blocks-storage.bucket-store.max-concurrent`. #7609 * [BUGFIX] Rules: improve error handling when querier is local to the ruler. #7567 diff --git a/cmd/mimir/config-descriptor.json b/cmd/mimir/config-descriptor.json index 5e1b4cab641..9e772385770 100644 --- a/cmd/mimir/config-descriptor.json +++ b/cmd/mimir/config-descriptor.json @@ -1863,7 +1863,7 @@ "fieldDefaultValue": true, "fieldFlag": "querier.minimize-ingester-requests", "fieldType": "boolean", - "fieldCategory": "experimental" + "fieldCategory": "advanced" }, { "kind": "field", diff --git a/cmd/mimir/help-all.txt.tmpl b/cmd/mimir/help-all.txt.tmpl index 9a6b3a1312f..3bab726ebd8 100644 --- a/cmd/mimir/help-all.txt.tmpl +++ b/cmd/mimir/help-all.txt.tmpl @@ -1714,7 +1714,7 @@ Usage of ./cmd/mimir/mimir: -querier.max-samples int Maximum number of samples a single query can load into memory. This config option should be set on query-frontend too when query sharding is enabled. (default 50000000) -querier.minimize-ingester-requests - [experimental] If true, when querying ingesters, only the minimum required ingesters required to reach quorum will be queried initially, with other ingesters queried only if needed due to failures from the initial set of ingesters. Enabling this option reduces resource consumption for the happy path at the cost of increased latency for the unhappy path. (default true) + If true, when querying ingesters, only the minimum required ingesters required to reach quorum will be queried initially, with other ingesters queried only if needed due to failures from the initial set of ingesters. Enabling this option reduces resource consumption for the happy path at the cost of increased latency for the unhappy path. (default true) -querier.minimize-ingester-requests-hedging-delay duration Delay before initiating requests to further ingesters when request minimization is enabled and the initially selected set of ingesters have not all responded. Ignored if -querier.minimize-ingester-requests is not enabled. (default 3s) -querier.prefer-streaming-chunks-from-ingesters diff --git a/docs/sources/mimir/configure/about-versioning.md b/docs/sources/mimir/configure/about-versioning.md index 83f1f39223d..04171800fae 100644 --- a/docs/sources/mimir/configure/about-versioning.md +++ b/docs/sources/mimir/configure/about-versioning.md @@ -122,7 +122,6 @@ The following features are currently experimental: - Use of Redis cache backend (`-blocks-storage.bucket-store.metadata-cache.backend=redis`) - Streaming chunks from ingester to querier (`-querier.prefer-streaming-chunks-from-ingesters`) - Streaming chunks from store-gateway to querier (`-querier.prefer-streaming-chunks-from-store-gateways`, `-querier.streaming-chunks-per-store-gateway-buffer-size`) - - Ingester query request minimisation (`-querier.minimize-ingester-requests`) - Limiting queries based on the estimated number of chunks that will be used (`-querier.max-estimated-fetched-chunks-per-query-multiplier`) - Max concurrency for tenant federated queries (`-tenant-federation.max-concurrent`) - Maximum response size for active series queries (`-querier.active-series-results-max-size-bytes`) diff --git a/docs/sources/mimir/configure/configuration-parameters/index.md b/docs/sources/mimir/configure/configuration-parameters/index.md index 87578891e99..cffd910f52f 100644 --- a/docs/sources/mimir/configure/configuration-parameters/index.md +++ b/docs/sources/mimir/configure/configuration-parameters/index.md @@ -1313,7 +1313,7 @@ store_gateway_client: # CLI flag: -querier.streaming-chunks-per-store-gateway-buffer-size [streaming_chunks_per_store_gateway_series_buffer_size: | default = 256] -# (experimental) If true, when querying ingesters, only the minimum required +# (advanced) If true, when querying ingesters, only the minimum required # ingesters required to reach quorum will be queried initially, with other # ingesters queried only if needed due to failures from the initial set of # ingesters. Enabling this option reduces resource consumption for the happy diff --git a/docs/sources/mimir/release-notes/v2.12.md b/docs/sources/mimir/release-notes/v2.12.md index 11b681744f0..c86c5a9b1e6 100644 --- a/docs/sources/mimir/release-notes/v2.12.md +++ b/docs/sources/mimir/release-notes/v2.12.md @@ -48,9 +48,12 @@ Additionally, the following previously experimental features are now considered - **The maximum number of concurrent index header loads across all tenants**, configurable via the `-blocks-storage.bucket-store.index-header.lazy-loading-concurrency` CLI flag on store-gateways. It defaults to `4`. -- **The maximum time to wait for the query-frontend to become ready before rejecting requests**, configurable via the `-query-frontend.not-running-timeout` CLI flags on query-frontends. +- **The maximum time to wait for the query-frontend to become ready before rejecting requests**, configurable via the `-query-frontend.not-running-timeout` CLI flag on query-frontends. It now defaults to `2s`. +- **The CLI flag that allows queriers to reduce pressure on ingesters** by initially querying only the minimum set of ingesters required to reach quorum, `-querier.minimize-ingester-requests`. + It is now enabled by default. + - **Spread-minimizing token-related CLI flags**: `-ingester.ring.token-generation-strategy`, `-ingester.ring.spread-minimizing-zones` and `-ingester.ring.spread-minimizing-join-ring-in-order`. You can read more about this feature [in our blog post](https://grafana.com/blog/2024/03/07/how-we-improved-ingester-load-balancing-in-grafana-mimir-with-spread-minimizing-tokens/). diff --git a/pkg/querier/querier.go b/pkg/querier/querier.go index e7303aede75..ba0ca37da3f 100644 --- a/pkg/querier/querier.go +++ b/pkg/querier/querier.go @@ -53,7 +53,7 @@ type Config struct { PreferAvailabilityZone string `yaml:"prefer_availability_zone" category:"experimental" doc:"hidden"` StreamingChunksPerIngesterSeriesBufferSize uint64 `yaml:"streaming_chunks_per_ingester_series_buffer_size" category:"advanced"` StreamingChunksPerStoreGatewaySeriesBufferSize uint64 `yaml:"streaming_chunks_per_store_gateway_series_buffer_size" category:"experimental"` - MinimizeIngesterRequests bool `yaml:"minimize_ingester_requests" category:"experimental"` // Enabled by default as of Mimir 2.11, remove altogether in 2.12. + MinimizeIngesterRequests bool `yaml:"minimize_ingester_requests" category:"advanced"` MinimiseIngesterRequestsHedgingDelay time.Duration `yaml:"minimize_ingester_requests_hedging_delay" category:"advanced"` // PromQL engine config.