মঙ্গোডিবিতে সংযোগের বর্তমান সংখ্যাটি পরীক্ষা করুন


90

কোনও নির্দিষ্ট মঙ্গোডিবি সার্ভারের সাথে সংযুক্ত ক্লায়েন্টের সংখ্যা পাওয়ার জন্য আদেশ কী?

উত্তর:


163

অ্যাডমিন ডাটাবেসের সাথে সংযুক্ত হয়ে চালান db.serverStatus():

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

আপনি সরাসরি জিজ্ঞাসা করে পেতে পারেন

db.serverStatus().connections

মঙ্গোডিবির db.serverStatus().connectionsপ্রতিক্রিয়ার অর্থ কী তা বোঝার জন্য ডকুমেন্টেশনটি এখানে পড়ুন

সংযোগ

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

সংযোগ একটি নথি যা সংযোগের স্থিতি সম্পর্কে রিপোর্ট করে। সার্ভারের বর্তমান লোড এবং ক্ষমতা প্রয়োজনীয়তার মূল্যায়ন করতে এই মানগুলি ব্যবহার করুন।

সংযোগগুলি । বর্তমান ডাটাবেস সার্ভারে ক্লায়েন্ট থেকে আগত সংযোগগুলির সংখ্যা। এই সংখ্যাটিতে বর্তমান শেল সেশন অন্তর্ভুক্ত রয়েছে। সংযোগগুলির মানটি বিবেচনা করুন this এই ডেটুমে আরও প্রসঙ্গ যুক্ত করতে উপলভ্য।

মানটিতে সমস্ত শেল সংযোগ বা অন্যান্য সার্ভারের সংযোগগুলি সহ প্রতিদ্বন্দ্বী সেট সদস্য বা মঙ্গোজের উদাহরণ সহ সমস্ত আগত সংযোগ অন্তর্ভুক্ত থাকবে।

সংযোগগুলি.উপলভ্য অব্যবহৃত আগমন সংযোগের সংখ্যা available ডাটাবেসে সংযোগের বোঝা বোঝার জন্য সংযোগসমূহের বর্তমানের সাথে এই মানটি বিবেচনা করুন available

সংযোগগুলি । সার্ভারে তৈরি সমস্ত আগত সংযোগগুলির গণনা t এই সংখ্যাটিতে সেই সংযোগগুলি অন্তর্ভুক্ত রয়েছে যা থেকে বন্ধ হয়ে গেছে।


25

মোট সহ ক্লায়েন্টআইপি দ্বারা সংযোগ গণনা

আমরা মোট সংযোগ গণনা সহ আইপিএড্রেস দ্বারা সংযোগের সংখ্যা দেখতে এটি ব্যবহার করি। এটি একটি সমস্যা ডিবাগ করতে সত্যিই সহায়ক ছিল ... হিট সর্বাধিক সংযোগের আগে কেবল সেখানে পৌঁছান!

মঙ্গো শেলের জন্য:

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

@ কার্টন.সুইং আমার কাছে ব্যাখ্যা এবং কমান্ড সহ উত্তরগুলি আপডেট হয়েছে সেগুলি দেখার জন্য।
সুপারগোটিয়াম

আপনি কি ঠিক ফিরে পাচ্ছেন db.currentOp(true)?
সুপারগোটিয়াম

দেখে মনে হচ্ছে এটি মংডব অ্যাটলাস দ্বারা অস্বীকার করা হয়েছে: { "ok" : 0, "errmsg" : "Using $all for currentOp is disallowed in this atlas tier", "code" : 8000, "codeName" : "AtlasError" }
17'19

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)

এটি দেখায় যে আমার কাছে বর্তমানে আমার কম্পিউটারে মঙ্গোডিবি বন্দরে (27017) পাঁচটি সংযোগ খোলা রয়েছে। আমার ক্ষেত্রে আমি একটি স্কাল্ট্রা সার্ভার থেকে মঙ্গোডিবিতে সংযোগ করছি এবং আমি মঙ্গোডিবি ক্যাসবাহ ড্রাইভার ব্যবহার করছি তবে আপনি যে ক্লায়েন্ট ব্যবহার করবেন না তা নির্বিশেষে একই লসফ টিসিপি সংযোগ দেখতে পাবেন (যতক্ষণ না তারা টিসিপি / ব্যবহার করে সংযোগ করছেন) আইপি)।


4
এই কমান্ড একটি একক সংযোগের জন্য একাধিক এন্ট্রি ফেরৎ stackoverflow.com/a/42930337/1843751
Ignite

4
আমি lsof এর জন্য -i পতাকা ব্যবহার করার পরামর্শ দিচ্ছি। তারপরে আপনি প্রতিটি সংযোগে কেবল 1 টি এন্ট্রি পান এবং টিসিপি-র জন্য গ্রেপ করার দরকার নেই। অর্থাত্sudo lsof -i | grep mongod
ডেটো

7

কমান্ডটি অনুসরণ করে মঙ্গো ডাটাবেসের জন্য সমস্ত সংযোগ দেখার চেষ্টা করেছি।

netstat -anp --tcp --udp | grep mongo

এই কমান্ডটি আরও বিস্তারিতভাবে মঙ্গোদ্বের জন্য প্রতিটি টিসিপি সংযোগ প্রদর্শন করতে পারে।

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

এছাড়াও, এই ফাংশনটি আপনাকে আপনার মঙ্গো ডিবিতে সংযুক্ত আইপি ঠিকানাগুলি সনাক্ত করতে সহায়তা করতে পারে

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

4
একেবারে সুন্দর - আপনাকে ধন্যবাদ! ঠিক আমি খুঁজছেন ছিল কি.
সমৃদ্ধ

4

এর সাথে সংযোগগুলি সম্পর্কে আরও কিছু বিশদ: db.currentOp(true)

থেকে নেওয়া: https://jira.mongodb.org/browse/SERVER-5085


আমি সমস্ত উত্তরগুলি ভেবে দেখেছি এবং হঠাৎ করে পড়েছি - এটি অন্যতম সহায়ক। ক্যোয়ারী সংযোগের সময়, বর্তমান টেবিল, ড্রাইভার সংস্করণ এবং প্ল্যাটফর্ম এবং এমনকি নির্দিষ্ট করা থাকলে অ্যাপনাম সহ অনেকগুলি অভ্যন্তরীণ বিবরণ দেয়
দিমিত্রি গুসরভ

2

মঙ্গো-শেল ব্যবহার করে মঙ্গোডিবিতে সংযুক্ত হন এবং নিম্নলিখিত কমান্ডটি চালান।

db.serverStatus().connections

যেমন:

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

2

db.runCommand (conn "কানপুলস্ট্যাটস": 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. sudo mongo "mongodb: // MONGO_HOST_IP: 27017" - স্বীকৃতি ডেটাবেস অ্যাডমিন

এটি আপনাকে সমস্ত সংযুক্ত ক্লায়েন্ট এবং তাদের বিশদ জানাতে দেবে

  1. db.currentOp (সত্য)


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.