connPoolStats

On this page

Definition

To run connPoolStats , use the db.runCommand( { <command> } ) method.

Note

connPoolStats only returns meaningful results for mongos instances and for mongod instances in sharded clusters.

The command takes the following form:

db.runCommand( { "connPoolStats" : 1 } )

The value of the argument (i.e. 1 ) does not affect the output of the command.

Behavior

connPoolStats includes aggregated statistics in its output:

  • The hosts field displays the information aggregated by host.

  • The pools field displays the information aggregated by pool.

Note

To avoid interference with any running operations, connPoolStats does not take any locks. As such, the counts may change slightly as connPoolStats gathers information, resulting in slight differences between the hosts and pools connection counts.

Example

The following operation uses the db.runCommand() method to run the connPoolStats command on a mongos of a sharded cluster. The sharded cluster has 2 shards, each a single-member replica set, and a config server replica set. The mongos runs on a 4-core machine.

db.runCommand( { "connPoolStats" : 1 } )

The command returns the output of the following form:

Note

The connPoolStats output varies depending on the deployment and the member against which you run connPoolStats among other factors.

{
   "numClientConnections" : <num>,
   "numAScopedConnections" : <num>,
   "totalInUse" : <num>,
   "totalAvailable" : <num>,
   "totalCreated" : <num>,
   "totalRefreshing" : <num>,
   "pools" : {
      "NetworkInterfaceASIO-TaskExecutorPool-0" : {
         "poolInUse" : <num>,
         "poolAvailable" : <num>,
         "poolCreated" : <num>,
         "poolRefreshing" : <num>,
         "cfg1.example.net:27019" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         }
      },
      "NetworkInterfaceASIO-TaskExecutorPool-1" : {
         "poolInUse" : <num>,
         "poolAvailable" : <num>,
         "poolCreated" : <num>,
         "poolRefreshing" : <num>,
         "cfg1.example.net:27019" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         }
      },
      "NetworkInterfaceASIO-TaskExecutorPool-2" : {
         "poolInUse" : <num>,
         "poolAvailable" : <num>,
         "poolCreated" : <num>,
         "poolRefreshing" : <num>,
         "cfg1.example.net:27019" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         }
      },
      "NetworkInterfaceASIO-TaskExecutorPool-3" : {
         "poolInUse" : <num>,
         "poolAvailable" : <num>,
         "poolCreated" : <num>,
         "poolRefreshing" : <num>,
         "cfg1.example.net:27019" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         }
      },
      "NetworkInterfaceASIO-ShardRegistry" : {
         "poolInUse" : <num>,
         "poolAvailable" : <num>,
         "poolCreated" : <num>,
         "poolRefreshing" : <num>,
         "cfg1.example.net:27019" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         },
         "cfg2.example.net:27019" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         },
         "cfg3.example.net:27019" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         },
         "shard1.example.net:27018" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         },
         "shard2.example.net:27018" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         }
      },
      "global" : {
         "poolInUse" : <num>,
         "poolAvailable" : <num>,
         "poolCreated" : <num>,
         "poolRefreshing" : <num>,
         "cfg3.example.net:27019" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         },
         "cfg1.example.net:27019" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         },
         "cfg2.example.net:27019" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         },
         "shard2.example.net:27018" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         },
         "shard1.example.net:27018" : {
            "inUse" : <num>,
            "available" : <num>,
            "created" : <num>,
            "refreshing" :<num>
         }
      }
   },
   "hosts" : {
      "cfg3.example.net:27019" : {
         "inUse" : <num>,
         "available" : <num>,
         "created" : <num>,
         "refreshing" :<num>
      },
      "cfg1.example.net:27019" : {
         "inUse" : <num>,
         "available" : <num>,
         "created" : <num>,
         "refreshing" :<num>
      },
      "cfg2.example.net:27019" : {
         "inUse" : <num>,
         "available" : <num>,
         "created" : <num>,
         "refreshing" :<num>
      },
      "shard2.example.net:27018" : {
         "inUse" : <num>,
         "available" : <num>,
         "created" : <num>,
         "refreshing" :<num>
      },
      "shard1.example.net:27018" : {
         "inUse" : <num>,
         "available" : <num>,
         "created" : <num>,
         "refreshing" :<num>
      }
   },
   "replicaSets" : {
      "csRS" : {
         "hosts" : [
            {
               "addr" : "cfg1.example.net:27019",
               "ok" : <bool>,
               "ismaster" : <bool>,
               "hidden" : <bool>,
               "secondary" : <bool>,
               "pingTimeMillis" : <num>
            },
            {
               "addr" : "cfg2.example.net:27019",
               "ok" : <bool>,
               "ismaster" : <bool>,
               "hidden" : <bool>,
               "secondary" : <bool>,
               "pingTimeMillis" : <num>
            },
            {
               "addr" : "cfg3.example.net:27019",
               "ok" : <bool>,
               "ismaster" : <bool>,
               "hidden" : <bool>,
               "secondary" : <bool>,
               "pingTimeMillis" : <num>
            }
         ]
      },
      "shardB" : {
         "hosts" : [
            {
               "addr" : "shard2.example.net:27018",
               "ok" : <bool>,
               "ismaster" : <bool>,
               "hidden" : <bool>,
               "secondary" : <bool>,
               "pingTimeMillis" : <num>
            }
         ]
      },
      "shardA" : {
         "hosts" : [
            {
               "addr" : "shard1.example.net:27018",
               "ok" : <bool>,
               "ismaster" : <bool>,
               "hidden" : <bool>,
               "secondary" : <bool>,
               "pingTimeMillis" : <num>
            }
         ]
      }
   },
   "ok" : 1,
   "$clusterTime" : {
      "clusterTime" : <timestamp>,
      "signature" : <document>
   },
   "operationTime" : <timestamp>

}

Output

  • connPoolStats. totalAvailable

  • connPoolStats. totalCreated

  • connPoolStats. totalInUse

  • connPoolStats. totalRefreshing

  • connPoolStats. numClientConnection

These connections are a part of a pool that is a subset of the data reported by totalAvailable, totalCreated, and totalInUse.

  • connPoolStats. numAScopedConnection

These connections are a part of a pool that is a subset of the data reported by totalAvailable, totalCreated, and totalInUse.

  • connPoolStats. pools

    • Reports on connection statistics (in use/available/created/refreshing) grouped by the connection pools. A mongod or mongos has two distinct families of outgoing connection pools:
  • DBClient-based pools (the “write path”) and

  • NetworkInterfaceASIO-based pools (the “read path”).

For each pool, the command returns a document that resembles the following:

{
  "poolInUse" : <num>,
  "poolAvailable" : <num>,
  "poolCreated" : <num>,
  "poolRefreshing" : <num>,
  "[host1]" : { "inUse" : <num>, "available" : <num>, "created" : <num>, "refreshing" : <num> },
  "[host2]" : { "inUse" : <num>, "available" : <num>, "created" : <num>, "refreshing" : <num> },
  ...
}

Note

If there are no connections (in use/available/created/refreshing) for a particular pool, the connPoolStats does not return statistics for that pool.

  • connPoolStats.pools. NetworkInterfaceASIO-TaskExecutorPool-[n]
    • Displays connection statics related to TaskExecutor pools. Typically, there will be one TaskExecutorPool per core, e.g. NetworkInterfaceASIO-TaskExecutorPool-0NetworkInterfaceASIO-TaskExecutorPool-7 for an 8-core processor.
  • connPoolStats.pools. NetworkInterfaceASIO-ShardRegistry
    • Available if the command is run on a member of a sharded cluster.

Displays the pool statistics for the connections between the current mongod/mongos instance and other members of the sharded cluster.

  • connPoolStats.pools. NetworkInterfaceASIO-Replication
    • Available if the command is run on a member of a replica set.

Displays the pool statistics for the connections between the current mongod instance and the other members of the replica set.

  • connPoolStats.pools. global

    • Displays the DBClient-based pool statistics.
  • connPoolStats. hosts

    • Reports on connection statistics (in use/available/created/refreshing) grouped by the hosts.

Contains documents that represent a report of connections between the current mongod/mongos instance and each member of the sharded cluster or replica set.

  • connPoolStats.hosts.[host]. available

    • Reports the total number of connections available for connecting to the [host] .
  • connPoolStats.hosts.[host]. created

    • Reports the number of connections to the [host] ever created.
  • connPoolStats.hosts.[host]. inUse

    • Reports the number of connections to the [host] that are currently in use.
  • connPoolStats. replicaSets

    • Contains documents that represent a report of information related to each replica set connected to the current mongod/mongos.
  • connPoolStats.replicaSets. replicaSet

  • connPoolStats.replicaSets.[replicaSets]. hosts

These values derive from the replica set status values.

  • connPoolStats.replicaSets.[replicaSet].hosts[n]. addr

    - Reports the address for the member in the replica set in [hostname]:[port] format.

  • connPoolStats.replicaSets.[replicaSet].hosts[n]. ok

    - Reports false when:

  • the current mongos or mongod cannot connect to instance.

  • the current mongos or mongod received a connection exception or error.

This field is for internal use.

  • connPoolStats.replicaSets.[replicaSet].hosts[n]. ismaster

    - Reports true if this host is the primary member of the replica set.

  • connPoolStats.replicaSets.[replicaSet].hosts[n]. hidden

    - Reports true if this host is a hidden member of the replica set.

  • connPoolStats.replicaSets.[replicaSet].hosts[n]. secondary

    - Reports true if this host is a secondary member of the replica set.

  • connPoolStats.replicaSets.[replicaSet].hosts[n]. pingTimeMillis

    - Reports the ping time in milliseconds from the mongos or mongod to this host .

  • connPoolStats.replicaSets.[replicaSet].hosts[n]. tags

    - Reports the members[n].tags, if this member of the set has tags configured.

See also Response for details on the ok status field, the operationTime field and the $clusterTime field.