Check the current number of connections to MongoDb

前端 未结 12 1084
南方客
南方客 2020-12-12 14:27

What is the command to get the number of clients connected to a particular MongoDB server?

相关标签:
12条回答
  • 2020-12-12 15:08

    Sorry because this is an old post and currently there is more options than before.

    db.getSiblingDB("admin").aggregate( [
       { $currentOp: { allUsers: true, idleConnections: true, idleSessions: true } }
      ,{$project:{
                "_id":0
               ,client:{$arrayElemAt:[ {$split:["$client",":"]}, 0 ] }
               ,curr_active:{$cond:[{$eq:["$active",true]},1,0]}
               ,curr_inactive:{$cond:[{$eq:["$active",false]},1,0]}
               }
       }
      ,{$match:{client:{$ne: null}}}
      ,{$group:{_id:"$client",curr_active:{$sum:"$curr_active"},curr_inactive:{$sum:"$curr_inactive"},total:{$sum:1}}}
      ,{$sort:{total:-1}}
    ] )
    

    Output example:

    { "_id" : "xxx.xxx.xxx.78", "curr_active" : 0, "curr_inactive" : 1428, "total" : 1428 }
    { "_id" : "xxx.xxx.xxx.76", "curr_active" : 0, "curr_inactive" : 1428, "total" : 1428 }
    { "_id" : "xxx.xxx.xxx.73", "curr_active" : 0, "curr_inactive" : 1428, "total" : 1428 }
    { "_id" : "xxx.xxx.xxx.77", "curr_active" : 0, "curr_inactive" : 1428, "total" : 1428 }
    { "_id" : "xxx.xxx.xxx.74", "curr_active" : 0, "curr_inactive" : 1428, "total" : 1428 }
    { "_id" : "xxx.xxx.xxx.75", "curr_active" : 0, "curr_inactive" : 1428, "total" : 1428 }
    { "_id" : "xxx.xxx.xxx.58", "curr_active" : 0, "curr_inactive" : 510, "total" : 510 }
    { "_id" : "xxx.xxx.xxx.57", "curr_active" : 0, "curr_inactive" : 459, "total" : 459 }
    { "_id" : "xxx.xxx.xxx.55", "curr_active" : 0, "curr_inactive" : 459, "total" : 459 }
    { "_id" : "xxx.xxx.xxx.56", "curr_active" : 0, "curr_inactive" : 408, "total" : 408 }
    { "_id" : "xxx.xxx.xxx.47", "curr_active" : 1, "curr_inactive" : 11, "total" : 12 }
    { "_id" : "xxx.xxx.xxx.48", "curr_active" : 1, "curr_inactive" : 7, "total" : 8 }
    { "_id" : "xxx.xxx.xxx.51", "curr_active" : 0, "curr_inactive" : 8, "total" : 8 }
    { "_id" : "xxx.xxx.xxx.46", "curr_active" : 0, "curr_inactive" : 8, "total" : 8 }
    { "_id" : "xxx.xxx.xxx.52", "curr_active" : 0, "curr_inactive" : 6, "total" : 6 }
    { "_id" : "127.0.0.1", "curr_active" : 1, "curr_inactive" : 0, "total" : 1 }
    { "_id" : "xxx.xxx.xxx.3", "curr_active" : 0, "curr_inactive" : 1, "total" : 1 }
    
    0 讨论(0)
  • 2020-12-12 15:09

    connect to the admin database and run db.serverStatus():

    > var status = db.serverStatus()
    > status.connections
       {"current" : 21, "available" : 15979}
    > 
    

    You can directly get by querying

    db.serverStatus().connections
    

    To understand what does MongoDb's db.serverStatus().connections response mean, read the documentation here.

    connections

    "connections" : {
       "current" : <num>,
       "available" : <num>,
       "totalCreated" : NumberLong(<num>)
    },
    

    connections A document that reports on the status of the connections. Use these values to assess the current load and capacity requirements of the server.

    connections.current The number of incoming connections from clients to the database server . This number includes the current shell session. Consider the value of connections.available to add more context to this datum.

    The value will include all incoming connections including any shell connections or connections from other servers, such as replica set members or mongos instances.

    connections.available The number of unused incoming connections available. Consider this value in combination with the value of connections.current to understand the connection load on the database, and the UNIX ulimit Settings document for more information about system thresholds on available connections.

    connections.totalCreated Count of all incoming connections created to the server. This number includes connections that have since closed.

    0 讨论(0)
  • 2020-12-12 15:10

    You can just use

    db.serverStatus().connections
    

    Also, this function can help you spot the IP addresses connected to your Mongo DB

    db.currentOp(true).inprog.forEach(function(x) { print(x.client) })
    
    0 讨论(0)
  • 2020-12-12 15:10

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

    {
        "numClientConnections" : 0,
        "numAScopedConnections" : 0,
        "totalInUse" : 0,
        "totalAvailable" : 0,
        "totalCreated" : 0,
        "hosts" : {
    
        },
        "replicaSets" : {
    
        },
        "ok" : 1
    }
    
    0 讨论(0)
  • 2020-12-12 15:10

    Connect to MongoDB using mongo-shell and run following command.

    db.serverStatus().connections
    

    e.g:

    mongo> db.serverStatus().connections
    { "current" : 3, "available" : 816, "totalCreated" : NumberLong(1270) }
    
    0 讨论(0)
  • 2020-12-12 15:11

    In OS X, too see the connections directly on the network interface, just do:

    $ lsof -n -i4TCP:27017
    
    mongod     2191 inanc    7u  IPv4 0xab6d9f844e21142f  0t0  TCP 127.0.0.1:27017 (LISTEN)
    mongod     2191 inanc   33u  IPv4 0xab6d9f84604cd757  0t0  TCP 127.0.0.1:27017->127.0.0.1:56078 (ESTABLISHED)
    stores.te 18704 inanc    6u  IPv4 0xab6d9f84604d404f  0t0  TCP 127.0.0.1:56078->127.0.0.1:27017 (ESTABLISHED)
    
    • No need to use grep etc, just use the lsof's arguments.

    • Too see the connections on MongoDb's CLI, see @milan's answer (which I just edited).

    0 讨论(0)
提交回复
热议问题