This is an automated email from the ASF dual-hosted git repository.

gwphua pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new b5e24cc09e0 Documentation in Basic Cluster Tuning using Group By 
Metrics (#19083)
b5e24cc09e0 is described below

commit b5e24cc09e020c3a6b15949691db24ccc9dc5e11
Author: Virushade <[email protected]>
AuthorDate: Sun Mar 8 01:25:02 2026 +0800

    Documentation in Basic Cluster Tuning using Group By Metrics (#19083)
    
    * Docs for tuning groupby
    
    * Docs
    
    * Update docs/operations/basic-cluster-tuning.md
    
    Co-authored-by: aho135 <[email protected]>
    
    * SpilledQueries docs
    
    * Update basic-cluster-tuning.md
    
    Co-authored-by: aho135 <[email protected]>
    
    ---------
    
    Co-authored-by: aho135 <[email protected]>
---
 docs/operations/basic-cluster-tuning.md | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/docs/operations/basic-cluster-tuning.md 
b/docs/operations/basic-cluster-tuning.md
index 4cbd9c964a7..51f8cb0f037 100644
--- a/docs/operations/basic-cluster-tuning.md
+++ b/docs/operations/basic-cluster-tuning.md
@@ -334,6 +334,25 @@ Non-nested GroupBy queries require 1 merge buffer per 
query, while a nested Grou
 
 The number of merge buffers determines the number of GroupBy queries that can 
be processed concurrently.
 
+#### Using metrics to tune GroupBy buffer configuration
+
+Druid can emit metrics that help you right-size merge buffers and related 
GroupBy configuration. These metrics are available when the 
`GroupByStatsMonitor` module is enabled by adding 
`org.apache.druid.server.metrics.GroupByStatsMonitor` to 
`druid.monitoring.monitors`. See the [metrics reference](metrics.md) for full 
details.
+
+##### Sizing `druid.processing.buffer.sizeBytes`
+
+- `mergeBuffer/maxBytesUsed`: peak merge buffer bytes used by any single 
GroupBy query within the emission period. If this value consistently approaches 
`druid.processing.buffer.sizeBytes`, consider increasing the buffer size.
+- `groupBy/maxSpilledBytes`: peak bytes spilled to disk by any single GroupBy 
query. Non-zero values indicate that merge buffers are too small to hold 
intermediate results in memory, causing disk spill. Increasing 
`druid.processing.buffer.sizeBytes` reduces spilling. You can also adjust 
`druid.query.groupBy.maxOnDiskStorage` to control how much spilling is allowed 
before a query fails.
+- `groupBy/spilledQueries`: number of GroupBy queries spilled to disk within 
the emission period. Non-zero values may indicate that your buffer size is too 
small and should be increased to avoid performance issues caused by excessive 
spilling.
+
+##### Sizing `druid.processing.numMergeBuffers`
+
+- `mergeBuffer/pendingRequests`: number of queries waiting to acquire merge 
buffers. Persistently non-zero values indicate merge buffer pool exhaustion; 
consider increasing `druid.processing.numMergeBuffers`.
+- `mergeBuffer/maxAcquisitionTimeNs`: peak time in nanoseconds that any single 
GroupBy query waited to acquire merge buffers. High values suggest contention 
on the merge buffer pool; increasing `druid.processing.numMergeBuffers` can 
reduce wait times.
+
+##### Sizing `druid.query.groupBy.maxMergingDictionarySize`
+
+- `groupBy/maxMergeDictionarySize`: peak on-heap merge dictionary size in 
bytes for any single GroupBy query. If this approaches 
`druid.query.groupBy.maxMergingDictionarySize`, queries may spill to disk if 
`druid.query.groupBy.maxOnDiskStorage` is configured or fail. If this happens, 
consider increasing the dictionary size limit.
+
 <a name="connection-pool"></a>
 
 ## Connection pool guidelines


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to