Definition
connPoolStatsThe command
connPoolStatsreturns information regarding the open outgoing connections from the current database instance to other members of the sharded cluster or replica set.To run
connPoolStats, use thedb.runCommand( { <command> } )method.Note
connPoolStatsonly returns meaningful results formongosinstances and formongodinstances 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
hostsfield displays the information aggregated by host.The
poolsfield 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>, "replicaSetMatchingStrategy" : <string>, "pools" : { "NetworkInterfaceTL-TaskExecutorPool-0" : { "poolInUse" : <num>, "poolAvailable" : <num>, "poolCreated" : <num>, "poolRefreshing" : <num>, "cfg1.example.net:27019" : { "inUse" : <num>, "available" : <num>, "created" : <num>, "refreshing" :<num> } }, "NetworkInterfaceTL-TaskExecutorPool-1" : { "poolInUse" : <num>, "poolAvailable" : <num>, "poolCreated" : <num>, "poolRefreshing" : <num>, "cfg1.example.net:27019" : { "inUse" : <num>, "available" : <num>, "created" : <num>, "refreshing" :<num> } }, "NetworkInterfaceTL-TaskExecutorPool-2" : { "poolInUse" : <num>, "poolAvailable" : <num>, "poolCreated" : <num>, "poolRefreshing" : <num>, "cfg1.example.net:27019" : { "inUse" : <num>, "available" : <num>, "created" : <num>, "refreshing" :<num> } }, "NetworkInterfaceTL-TaskExecutorPool-3" : { "poolInUse" : <num>, "poolAvailable" : <num>, "poolCreated" : <num>, "poolRefreshing" : <num>, "cfg1.example.net:27019" : { "inUse" : <num>, "available" : <num>, "created" : <num>, "refreshing" :<num> } }, "NetworkInterfaceTL-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.totalAvailableReports the total number of available outgoing connections from the current
mongod/mongosinstance to other members of the sharded cluster or replica set.
connPoolStats.totalCreatedReports the total number of outgoing connections ever created by the current
mongod/mongosinstance to other members of the sharded cluster or replica set.
connPoolStats.totalInUseReports the total number of outgoing connections from the current
mongod/mongosinstance to other members of the sharded cluster or replica set that are currently in use.
connPoolStats.totalRefreshingReports the total number of outgoing connections from the current
mongod/mongosinstance to other members of the sharded cluster or replica set that are currently being refreshed.
connPoolStats.replicaSetMatchingStrategyOn a
mongosinstance, this value reports the policy used by the instance to determine the minimum size limit of its connection pools to nodes within replica sets.On a
mongodinstance, this value reports the policy used by the instance to determine the minimum size limit of its connection pools to nodes within other replica sets.The policy for
mongosandmongodcan be set with theShardingTaskExecutorPoolReplicaSetMatchingparameter.Note
If the
ShardingTaskExecutorPoolReplicaSetMatchingis set to"automatic", thereplicaSetMatchingStrategystill describes the actual policy being used, not"automatic". To find the value of theShardingTaskExecutorPoolReplicaSetMatching, usegetParameterwhich returns the value of the server parameter:db.adminCommand( { getParameter : 1, "ShardingTaskExecutorPoolReplicaSetMatching" : 1 } )
connPoolStats.numClientConnectionReports the number of active and stored outgoing synchronous connections from the current
mongod/mongosinstance to other members of the sharded cluster or replica set.These connections are a part of a pool that is a subset of the data reported by
totalAvailable,totalCreated, andtotalInUse.
connPoolStats.numAScopedConnectionReports the number of active and stored outgoing scoped synchronous connections from the current
mongod/mongosinstance to other members of the sharded cluster or replica set.These connections are a part of a pool that is a subset of the data reported by
totalAvailable,totalCreated, andtotalInUse.
connPoolStats.poolsReports on connection statistics (in use/available/created/refreshing) grouped by the connection pools. A
mongodormongoshas two distinct families of outgoing connection pools:DBClient-based pools (the "write path") and
NetworkInterfaceTL-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
connPoolStatsdoes not return statistics for that pool.connPoolStats.pools.NetworkInterfaceTL-TaskExecutorPool-[n]Displays connection statics related to TaskExecutor pools. Typically, there will be one TaskExecutorPool per core, e.g.
pools.NetworkInterfaceTL-TaskExecutorPool-0...pools.NetworkInterfaceTL-TaskExecutorPool-7for an 8-core processor.
connPoolStats.pools.NetworkInterfaceTL-ShardRegistryAvailable if the command is run on a member of a sharded cluster.
Displays the pool statistics for the connections between the current
mongod/mongosinstance and other members of the sharded cluster.
connPoolStats.pools.NetworkInterfaceTL-ReplicationAvailable if the command is run on a member of a replica set.
Displays the pool statistics for the connections between the current
mongodinstance and the other members of the replica set.
connPoolStats.hostsReports on connection statistics (in use/available/created/refreshing) grouped by the hosts.
Contains documents that represent a report of connections between the current
mongod/mongosinstance and each member of the sharded cluster or replica set.
connPoolStats.replicaSetsContains documents that represent a report of information related to each replica set connected to the current
mongod/mongos.connPoolStats.replicaSets.replicaSetReports on each replica set connected to the current
mongod/mongos.
connPoolStats.replicaSets.[replicaSets].hostsHolds an array of documents that reports on each member in the replica set.
These values derive from the replica set status values.
connPoolStats.replicaSets.[replicaSet].hosts[n].addrReports the address for the member in the replica set in
[hostname]:[port]format.
connPoolStats.replicaSets.[replicaSet].hosts[n].okReports
falsewhen:This field is for internal use.
connPoolStats.replicaSets.[replicaSet].hosts[n].ismasterReports
trueif thishostis the primary member of the replica set.
connPoolStats.replicaSets.[replicaSet].hosts[n].hiddenReports
trueif thishostis a hidden member of the replica set.
connPoolStats.replicaSets.[replicaSet].hosts[n].secondaryReports
trueif thishostis a secondary member of the replica set.
connPoolStats.replicaSets.[replicaSet].hosts[n].pingTimeMillisReports the ping time in milliseconds from the
mongosormongodto thishost.
connPoolStats.replicaSets.[replicaSet].hosts[n].tagsReports 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.