MongoDb के कनेक्शन की वर्तमान संख्या की जाँच करें


90

किसी विशेष MongoDB सर्वर से जुड़े ग्राहकों की संख्या प्राप्त करने के लिए क्या कमांड है?

जवाबों:


163

व्यवस्थापक डेटाबेस से कनेक्ट करें और चलाएं 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 सर्वर पर आने वाले सभी आने वाले कनेक्शनों की गणना। इस संख्या में वे कनेक्शन शामिल हैं जो तब से बंद हैं।


25

कुल मिलाकर, 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 :व्यवस्थापक उपयोगकर्ता का उपयोग कर
otong

@ गत्ते का डिब्बा। मैं उन्हें देखने के लिए स्पष्टीकरण और आदेश के साथ जवाब अद्यतन किया है।
SuperGoTeam

@otong क्या आप बस के लिए वापस मिलता है db.currentOp(true)?
SuperGoTeam

ऐसा लगता है कि यह मोंडबोड एटलस द्वारा अस्वीकार कर दिया गया है: { "ok" : 0, "errmsg" : "Using $all for currentOp is disallowed in this atlas tier", "code" : 8000, "codeName" : "AtlasError" }
ओटोंग जूल

19

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 कनेक्शन का उपयोग किए गए क्लाइंट की परवाह किए बिना (जब तक वे टीसीपी का उपयोग करके कनेक्ट कर रहे हैं) देखेंगे। आईपी)।


1
यह कमांड एक ही कनेक्शन के लिए कई प्रविष्टियाँ लौटाता है: stackoverflow.com/a/42930337/1843751
प्रज्वलित करें

3
मैं lsof के लिए -i ध्वज का उपयोग करने का सुझाव देता हूं। तब आपको केवल प्रत्येक कनेक्शन में 1 प्रविष्टि मिलती है और टीसीपी के लिए grep की आवश्यकता नहीं होती है। यानीsudo lsof -i | grep mongod
दत्तो

7

मैंने कमांड का पालन करके मोंगो डेटाबेस के लिए सभी कनेक्शन देखने की कोशिश की।

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   

7

ओएस एक्स में, नेटवर्क कनेक्शन पर सीधे कनेक्शन देखें, बस करें :

$ 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तर्क का उपयोग करें ।

  • मानगोडब के सीएलआई पर भी कनेक्शन देखें, @ मिलन का उत्तर ( जो मैंने अभी संपादित किया है ) देखें।


7

आप बस उपयोग कर सकते हैं

db.serverStatus().connections

साथ ही, यह फ़ंक्शन आपके Mongo DB से जुड़े आईपी पते को देखने में आपकी सहायता कर सकता है

db.currentOp(true).inprog.forEach(function(x) { print(x.client) })

1
बिल्कुल सुंदर - धन्यवाद! ठीक वही जो मेरे द्वारा खोजा जा रहा था।
प्रॉस्पेरस

4

इसके अलावा कनेक्शन पर कुछ और विवरण: db.currentOp(true)

से लिया गया: https://jira.mongodb.org/browse/SERVER-5085


मैंने सोचा है कि सभी उत्तरों को पढ़ा है और अचानक - यह सबसे उपयोगी में से एक है। क्वेरी आंतरिक विवरण के टन देता है, जैसे कि कनेक्शन समय, वर्तमान तालिका, ड्राइवर संस्करण और प्लेटफ़ॉर्म, और यहां तक ​​कि अगर निर्दिष्ट किया गया है, तो भी इसमें शामिल होना चाहिए
दिमित्री

2

मोंगो-शेल का उपयोग करके MongoDB से कनेक्ट करें और निम्न कमांड चलाएं।

db.serverStatus().connections

उदाहरण के लिए:

mongo> db.serverStatus().connections
{ "current" : 3, "available" : 816, "totalCreated" : NumberLong(1270) }

2

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}
एलेक्स एफिमोव

2

क्षमा करें क्योंकि यह एक पुरानी पोस्ट है और वर्तमान में पहले से अधिक विकल्प हैं।

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 }

1

स्थानीय प्रणाली से अपने मोंगोडब उदाहरण के साथ कनेक्ट करें

  1. सूदो मोंगो "मोंगोडब: // मोंगो_एचएसटी_आईपी: 27017" - अप्रेंटिसडैबस एडमिन

यह आपको सभी जुड़े ग्राहकों और उनके विवरणों की जानकारी देगा

  1. db.currentOp (सही)


0

वैकल्पिक रूप से आप Mongo Atlas में प्रवेश करके और फिर अपने क्लस्टर में नेविगेट करके कनेक्शन की स्थिति की जांच कर सकते हैं ।

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.