किसी विशेष MongoDB सर्वर से जुड़े ग्राहकों की संख्या प्राप्त करने के लिए क्या कमांड है?
जवाबों:
व्यवस्थापक डेटाबेस से कनेक्ट करें और चलाएं db.serverStatus()
:
> var status = db.serverStatus()
> status.connections
{"current" : 21, "available" : 15979}
>
आप सीधे क्वेरी करके प्राप्त कर सकते हैं
db.serverStatus().connections
यह समझने के लिए कि MongoDb की db.serverStatus().connections
प्रतिक्रिया का क्या मतलब है, यहां प्रलेखन पढ़ें ।
सम्बन्ध
"connections" : { "current" : <num>, "available" : <num>, "totalCreated" : NumberLong(<num>) },
कनेक्शन एक दस्तावेज़ जो कनेक्शन की स्थिति पर रिपोर्ट करता है। सर्वर के वर्तमान लोड और क्षमता आवश्यकताओं का आकलन करने के लिए इन मूल्यों का उपयोग करें।
connection.current क्लाइंट से डेटाबेस सर्वर पर आने वाले कनेक्शन की संख्या। इस संख्या में वर्तमान शेल सत्र शामिल है। कनेक्शन के मूल्य पर विचार करें। इस डेटा में अधिक संदर्भ जोड़ने के लिए उपलब्ध नहीं है।
मान में सभी आवक कनेक्शन शामिल होंगे, जिसमें किसी भी शेल कनेक्शन या अन्य सर्वर से कनेक्शन शामिल होंगे, जैसे प्रतिकृति सेट सदस्य या मोंगो उदाहरण।
कनेक्शन । अनुपलब्ध अनुपलब्ध आने वाले कनेक्शन की संख्या। डेटाबेस पर कनेक्शन लोड को समझने के लिए कनेक्शनों के मूल्य के साथ संयोजन में इस मूल्य पर विचार करें। और उपलब्ध कनेक्शनों पर सिस्टम थ्रेसहोल्ड के बारे में अधिक जानकारी के लिए UNIX ulimit सेटिंग्स दस्तावेज़।
connection.totalCreated सर्वर पर आने वाले सभी आने वाले कनेक्शनों की गणना। इस संख्या में वे कनेक्शन शामिल हैं जो तब से बंद हैं।
कुल मिलाकर, ClientIP द्वारा कनेक्शन गणना
हम इसका उपयोग IPAddress द्वारा कुल कनेक्शन गणना के साथ कनेक्शन की संख्या देखने के लिए करते हैं। यह वास्तव में एक मुद्दे को डिबग करने में सहायक था ... बस हिट अधिकतम कनेक्शन से पहले वहां पहुंचें!
मानगो शैल के लिए:
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 })
प्रारूपित:
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 }
)
उदाहरण वापसी:
{
"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
}
(एटलस आंतरिक निगरानी में 192.xxx पते)
"आंतरिक" आंतरिक प्रक्रियाएं हैं जिनमें एक बाहरी ग्राहक नहीं है। आप इसके साथ इनमें से एक सूची देख सकते हैं:
db.currentOp(true).inprog.filter(connection => !connection.client).map(connection => connection.desc);
E QUERY [js] TypeError: db.currentOp(...).inprog is undefined :
व्यवस्थापक उपयोगकर्ता का उपयोग कर
db.currentOp(true)
?
{ "ok" : 0, "errmsg" : "Using $all for currentOp is disallowed in this atlas tier", "code" : 8000, "codeName" : "AtlasError" }
db.serverStatus()
कनेक्शन का कोई विकल्प नहीं देता है और लाभ नहीं देता है, लेकिन किस क्लाइंट से कनेक्शन दिखाता है। अधिक जानकारी के लिए आप इस कमांड का उपयोग कर सकते हैं sudo lsof | grep mongod | grep TCP
। मुझे इसकी आवश्यकता तब होती है जब मैंने प्रतिकृति और प्राथमिक नोड में कई क्लाइंट कनेक्शन माध्यमिक से अधिक होते हैं।
$ 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)
इससे पता चलता है कि वर्तमान में मेरे कंप्यूटर पर MongoDB पोर्ट (27017) में पांच कनेक्शन खुले हैं। मेरे मामले में मैं एक Scalatra सर्वर से MongoDB से कनेक्ट कर रहा हूं, और मैं MongoDB Casbah ड्राइवर का उपयोग कर रहा हूं, लेकिन आप उसी lsof TCP कनेक्शन का उपयोग किए गए क्लाइंट की परवाह किए बिना (जब तक वे टीसीपी का उपयोग करके कनेक्ट कर रहे हैं) देखेंगे। आईपी)।
sudo lsof -i | grep mongod
मैंने कमांड का पालन करके मोंगो डेटाबेस के लिए सभी कनेक्शन देखने की कोशिश की।
netstat -anp --tcp --udp | grep mongo
यह कमांड mongodb के लिए हर tcp कनेक्शन को और अधिक विस्तार से दिखा सकता है।
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
ओएस एक्स में, नेटवर्क कनेक्शन पर सीधे कनेक्शन देखें, बस करें :
$ 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)
grep
आदि का उपयोग करने की आवश्यकता नहीं है , बस lsof
तर्क का उपयोग करें ।
मानगोडब के सीएलआई पर भी कनेक्शन देखें, @ मिलन का उत्तर ( जो मैंने अभी संपादित किया है ) देखें।
आप बस उपयोग कर सकते हैं
db.serverStatus().connections
साथ ही, यह फ़ंक्शन आपके Mongo DB से जुड़े आईपी पते को देखने में आपकी सहायता कर सकता है
db.currentOp(true).inprog.forEach(function(x) { print(x.client) })
इसके अलावा कनेक्शन पर कुछ और विवरण:
db.currentOp(true)
से लिया गया: https://jira.mongodb.org/browse/SERVER-5085
db.runCommand ({"conPoolStats": 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}
क्षमा करें क्योंकि यह एक पुरानी पोस्ट है और वर्तमान में पहले से अधिक विकल्प हैं।
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}}
] )
आउटपुट उदाहरण:
{ "_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 }
स्थानीय प्रणाली से अपने मोंगोडब उदाहरण के साथ कनेक्ट करें
यह आपको सभी जुड़े ग्राहकों और उनके विवरणों की जानकारी देगा
db.currentOp (सही)
वैकल्पिक रूप से आप Mongo Atlas में प्रवेश करके और फिर अपने क्लस्टर में नेविगेट करके कनेक्शन की स्थिति की जांच कर सकते हैं ।