Navigation

db.collection.latencyStats()

On this page

Definition

db.collection.latencyStats(options)

db.collection.latencyStats() returns latency statistics for a given collection. It is a wrapper around $collStats.

This method has the form:

db.collection.latencyStats( { histograms: <boolean> } )

The histograms argument is an optional boolean. If histograms: true then latencyStats() adds latency histograms to the return document.

See also

$collStats

Output

latencyStats() returns a document containing a field latencyStats, containing the following fields:

Field Name Description
reads Latency statistics for read requests.
writes Latency statistics for write requests.
commands Latency statistics for database commands.

Each of these fields contains an embedded document bearing the following fields:

Field Name Description
latency A long giving the total combined latency in microseconds.
ops A long giving the total number of operations performed on the collection since startup.
histogram

An array of embedded documents, each representing a latency range. Each document covers twice the previous document’s range. For upper values between 2048 microseconds and roughly 1 second, the histogram includes half-steps.

This field only exists given the latencyStats: { histograms: true } option. Empty ranges with a zero count are omitted from the output.

Each document bears the following fields:

Field Name Description
micros

A long giving the inclusive upper time bound of the current latency range in microseconds.

The document’s range spans between the previous document’s micros value, exclusive, and this document’s micros value, inclusive.

count A long giving the number of operations with latency less than or equal to micros.

For example, if collStats returns the following histogram:

histogram: [
  { micros: NumberLong(1), count: NumberLong(10) },
  { micros: NumberLong(2), count: NumberLong(1) },
  { micros: NumberLong(4096), count: NumberLong(1) },
  { micros: NumberLong(16384), count: NumberLong(1000) },
  { micros: NumberLong(49152), count: NumberLong(100) }
]

This indicates that there were:

  • 10 operations taking 1 microsecond or less,
  • 1 operation in the range (1, 2] microseconds,
  • 1 operation in the range (3072, 4096] microseconds,
  • 1000 operations in the range (12288, 16384], and
  • 100 operations in the range (32768, 49152].

Examples

You can run latencyStats() in a mongo shell as follows:

db.data.latencyStats( { histograms: true } ).pretty()

latencyStats() returns a document such as the following:

{
  "ns" : "test.data",
  "localTime" : ISODate("2016-11-01T21:56:28.962Z"),
  "latencyStats" : {
    "reads" : {
      "histogram" : [
        {
          "micros" : NumberLong(16),
          "count" : NumberLong(6)
        },
        {
          "micros" : NumberLong(512),
          "count" : NumberLong(1)
        }
      ],
      "latency" : NumberLong(747),
      "ops" : NumberLong(7)
    },
    "writes" : {
      "histogram" : [
        {
          "micros" : NumberLong(64),
          "count" : NumberLong(1)
        },
        {
          "micros" : NumberLong(24576),
          "count" : NumberLong(1)
        }
      ],
      "latency" : NumberLong(26845),
      "ops" : NumberLong(2)
    },
    "commands" : {
      "histogram" : [ ],
      "latency" : NumberLong(0),
      "ops" : NumberLong(0)
    }
  }
}