Belirli bir MongoDB sunucusuna bağlı istemcilerin sayısını alma komutu nedir?
Yanıtlar:
yönetici veritabanına bağlanın ve çalıştırın db.serverStatus():
> var status = db.serverStatus()
> status.connections
{"current" : 21, "available" : 15979}
>
Doğrudan sorgulayarak alabilirsiniz
db.serverStatus().connections
Mongodb en ne yaptığını anlamak için db.serverStatus().connectionstepki ortalamasını, dokümanları okuyun burada .
bağlantıları
"connections" : { "current" : <num>, "available" : <num>, "totalCreated" : NumberLong(<num>) },bağlantılar Bağlantıların durumu hakkında rapor veren bir belge. Sunucunun mevcut yük ve kapasite gereksinimlerini değerlendirmek için bu değerleri kullanın.
connection.current İstemcilerden veritabanı sunucusuna gelen bağlantıların sayısı. Bu sayı, mevcut kabuk oturumunu içerir. Bu veriye daha fazla bağlam eklemek için connection.available değerini göz önünde bulundurun.
Değer, herhangi bir kabuk bağlantıları veya replika kümesi üyeleri veya mongos örnekleri gibi diğer sunuculardan gelen bağlantılar dahil olmak üzere tüm gelen bağlantıları içerecektir.
connection.available Kullanılmayan gelen bağlantıların sayısı kullanılabilir. Veritabanındaki bağlantı yükünü anlamak için bu değeri connection.current değeri ile ve mevcut bağlantılarla ilgili sistem eşikleri hakkında daha fazla bilgi için UNIX ulimit Settings belgesi ile birlikte düşünün.
connection.totalCreated Sunucuya oluşturulan tüm gelen bağlantıların sayısı. Bu numara, o zamandan beri kapanan bağlantıları içerir.
İstemciIP'sine göre Bağlantı Sayısı, Toplam
Bunu, IPAdresine göre toplam bağlantı sayısı ile bağlantı sayısını görüntülemek için kullanırız. Bu, bir sorunu gidermede gerçekten yardımcı oldu ... maksimum bağlantıya ulaşmadan önce oraya gidin!
Mongo Shell için:
db.currentOp(true).inprog.reduce((accumulator, connection) => { ipaddress = connection.client ? connection.client.split(":")[0] : "Internal"; accumulator[ipaddress] = (accumulator[ipaddress] || 0) + 1; accumulator["TOTAL_CONNECTION_COUNT"]++; return accumulator; }, { TOTAL_CONNECTION_COUNT: 0 })
Biçimlendirilmiş:
db.currentOp(true).inprog.reduce(
(accumulator, connection) => {
ipaddress = connection.client ? connection.client.split(":")[0] : "Internal";
accumulator[ipaddress] = (accumulator[ipaddress] || 0) + 1;
accumulator["TOTAL_CONNECTION_COUNT"]++;
return accumulator;
},
{ TOTAL_CONNECTION_COUNT: 0 }
)
Örnek iade:
{
"TOTAL_CONNECTION_COUNT" : 331,
"192.168.253.72" : 8,
"192.168.254.42" : 17,
"127.0.0.1" : 3,
"192.168.248.66" : 2,
"11.178.12.244" : 2,
"Internal" : 41,
"3.100.12.33" : 86,
"11.148.23.34" : 168,
"81.127.34.11" : 1,
"84.147.25.17" : 3
}
(Atlas dahili izlemedeki 192.xxx adresleri)
"Dahili", harici bir istemcisi olmayan dahili süreçlerdir. Bunların bir listesini şununla görüntüleyebilirsiniz:
db.currentOp(true).inprog.filter(connection => !connection.client).map(connection => connection.desc);
E QUERY [js] TypeError: db.currentOp(...).inprog is undefined :yönetici kullanıcı kullanılıyor
db.currentOp(true)?
{ "ok" : 0, "errmsg" : "Using $all for currentOp is disallowed in this atlas tier", "code" : 8000, "codeName" : "AtlasError" }
db.serverStatus()bağlantıların açık ve uygun olmadığını verir, ancak hangi istemciden gelen bağlantıları göstermez. Daha fazla bilgi için bu komutu kullanabilirsiniz sudo lsof | grep mongod | grep TCP. Çoğaltma yaptığımda ve birincil düğümün ikincilden daha büyük birçok istemci bağlantısı olduğunda buna ihtiyacım var.
$ sudo lsof | grep mongod | grep TCP
mongod 5733 Al 6u IPv4 0x08761278 0t0 TCP *:28017 (LISTEN)
mongod 5733 Al 7u IPv4 0x07c7eb98 0t0 TCP *:27017 (LISTEN)
mongod 5733 Al 9u IPv4 0x08761688 0t0 TCP 192.168.1.103:27017->192.168.1.103:64752 (ESTABLISHED)
mongod 5733 Al 12u IPv4 0x08761a98 0t0 TCP 192.168.1.103:27017->192.168.1.103:64754 (ESTABLISHED)
mongod 5733 Al 13u IPv4 0x095fa748 0t0 TCP 192.168.1.103:27017->192.168.1.103:64770 (ESTABLISHED)
mongod 5733 Al 14u IPv4 0x095f86c8 0t0 TCP 192.168.1.103:27017->192.168.1.103:64775 (ESTABLISHED)
mongod 5733 Al 17u IPv4 0x08764748 0t0 TCP 192.168.1.103:27017->192.168.1.103:64777 (ESTABLISHED)
Bu, şu anda bilgisayarımdaki MongoDB bağlantı noktasına (27017) açık beş bağlantım olduğunu gösteriyor. Benim durumumda, bir Scalatra sunucusundan MongoDB'ye bağlanıyorum ve MongoDB Casbah sürücüsünü kullanıyorum, ancak kullanılan istemciden bağımsız olarak aynı lsof TCP bağlantılarını göreceksiniz (TCP / IP).
sudo lsof -i | grep mongod
Sadece kullanabilirsin
db.serverStatus().connections
Ayrıca, bu işlev Mongo DB'nize bağlı IP adreslerini bulmanıza yardımcı olabilir.
db.currentOp(true).inprog.forEach(function(x) { print(x.client) })
Mongo veritabanı için tüm bağlantıları aşağıdaki komutu izleyerek görmeye çalıştım.
netstat -anp --tcp --udp | grep mongo
Bu komut, mongodb için her tcp bağlantısını daha ayrıntılı olarak gösterebilir.
tcp 0 0 10.26.2.185:27017 10.26.2.1:2715 ESTABLISHED 1442/./mongod
tcp 0 0 10.26.2.185:27017 10.26.2.1:1702 ESTABLISHED 1442/./mongod
tcp 0 0 10.26.2.185:27017 10.26.2.185:39506 ESTABLISHED 1442/./mongod
tcp 0 0 10.26.2.185:27017 10.26.2.185:40021 ESTABLISHED 1442/./mongod
tcp 0 0 10.26.2.185:27017 10.26.2.185:39509 ESTABLISHED 1442/./mongod
tcp 0 0 10.26.2.185:27017 10.26.2.184:46062 ESTABLISHED 1442/./mongod
tcp 0 0 10.26.2.185:27017 10.26.2.184:46073 ESTABLISHED 1442/./mongod
tcp 0 0 10.26.2.185:27017 10.26.2.184:46074 ESTABLISHED 1442/./mongod
OS X'te de bağlantıları doğrudan ağ arayüzünde görün, sadece şunları yapın:
$ 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)
grepVb. Kullanmaya gerek yok , sadece lsof's argümanlarını kullanın .
MongoDb'nin CLI'sindeki bağlantıları görmek için @ milan'ın cevabına ( az önce düzenlediğim ) bakın.
Ayrıca aşağıdaki bağlantılarla ilgili daha fazla ayrıntı:
db.currentOp(true)
db.runCommand ({"connPoolStats": 1})
{
"numClientConnections" : 0,
"numAScopedConnections" : 0,
"totalInUse" : 0,
"totalAvailable" : 0,
"totalCreated" : 0,
"hosts" : {
},
"replicaSets" : {
},
"ok" : 1
}
MongoMonitoringController : { "numClientConnections" : 0 , "numAScopedConnections" : 0 , "totalInUse" : 0 , "totalAvailable" : 0 , "totalCreated" : 0 , "totalRefreshing" : 0 , "pools" : { } , "hosts" : { } , "replicaSets" : { } , "ok" : 1.0}
Üzgünüz çünkü bu eski bir gönderi ve şu anda öncekinden daha fazla seçenek var.
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}}
] )
Çıktı örneği:
{ "_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 }
Yerel sistemden mongodb örneğinizle bağlantı kurun
Tüm bağlı istemcileri ve ayrıntılarını bilmenizi sağlar
db.currentOp (true)
Alternatif olarak, Mongo Atlas'ta oturum açıp ardından kümenize giderek bağlantı durumunu kontrol edebilirsiniz .