Query metrics MBean

Use the query metrics MBean to:

  • Troubleshoot query performance.

  • Tune DSE Search configuration, such as the search index schema and caches; and tune server resources, such as the JVM heap.

  • Record the amount of time spent to run several main phases of a distributed query on the search index.

  • Measure latency in microseconds.

To group by query, provide an additional query.name parameter. For example, for a search index named demo.solr with an indexed field named type, use the following URL to provide the additional query.name parameter:

http://localhost:8983/solr/demo.solr/select/?q=type:1&query.name=myquery

All metrics collected under a given query name are recorded and retrieved separately. If a query name is not provided, all metrics are recorded together.

Main operational phases

The main phases of a distributed query operation are:

ENQEUE

Comprises the time spent by a query request waiting for a thread to execute.

EXECUTE

Comprises the time spent by a single shard to execute the actual index query. This value is computed on the local node executing the shard query.

RETRIEVE

Comprises the time spent by a node to retrieve a single row from the database. This value will be computed on the local node hosting the requested data.

COORDINATE

Comprises the total amount of time spent by the coordinator node to distribute the query and gather/process results from shards. This value is computed only on query coordinator nodes. Includes RETRIEVE and EXECUTE in the total.

TOTAL

Comprises the total server-side time for a search query. Includes COORDINATE and ENQEUE in the total.

Query metrics MBean set operations

Operations are:

setEnabled(boolean enabled)

Enables/disables metrics recording. Enabled by default.

isEnabled()

Checks if metrics recording is enabled.

getLatencyPercentile(String phase, String query, double percentile)

Gets a query latency percentile by its query name, which is optional and can be null, and phase.

getRecordedLatencyCount(String phase, String query)

Gets the total count of recorded latency metrics by its query name, which is optional and can be null, and phase.

getUnrecordedLatencyCount()

Gets the total count of unrecorded latency values due to exceeding the maximum tracked latency, which is 10 minutes.

resetLatency(String query)

Resets latency metrics for the given query name, which is optional and can be null.

resetLatencies()

Resets all latency metrics.

Query metrics MBean attributes

Attributes are:

Enabled

Indicates whether metrics recording is enabled or disabled.

EnqueuedRequestCount

Indicates the number of client requests that are currently waiting for a query thread.

If the value of the EnqueuedRequestCount MBean increases, or stabilizes above zero for a prolonged period, then DSE Search has reached a point of maximum throughput, where additional load will only increases latencies.

To access this attribute, use the -f option with the nodetool sjk command, as shown in the following example.

nodetool sjk -p 7199 mx -mg \
-b com.datastax.bdp:type=search,index=demo.solr,name=QueryMetrics \
-f EnqueuedRequestCount
UnrecordedLatencyCount

The total count of unrecorded latency values due to exceeding the maximum tracked latency, which is 10 minutes.

Was this helpful?

Give Feedback

How can we improve the documentation?

© 2024 DataStax | Privacy policy | Terms of use

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: +1 (650) 389-6000, info@datastax.com