Wie lautet der Befehl, um die Anzahl der mit einem bestimmten MongoDB-Server verbundenen Clients abzurufen?
Stellen Sie eine Verbindung zur Admin-Datenbank her und führen Sie Folgendes aus db.serverStatus()
:
> var status = db.serverStatus()
> status.connections
{"current" : 21, "available" : 15979}
>
Sie können direkt durch Abfrage erhalten
db.serverStatus().connections
db.serverStatus().connections
Lesen Sie die Dokumentation hier , um zu verstehen, was die Antwort von MongoDb bedeutet .
Verbindungen
"connections" : { "current" : <num>, "available" : <num>, "totalCreated" : NumberLong(<num>) },
Verbindungen Ein Dokument, das den Status der Verbindungen meldet. Verwenden Sie diese Werte, um die aktuellen Last- und Kapazitätsanforderungen des Servers zu bewerten.
connection.current Die Anzahl der eingehenden Verbindungen von Clients zum Datenbankserver. Diese Nummer enthält die aktuelle Shell-Sitzung. Berücksichtigen Sie den Wert von connection.available, um diesem Datum mehr Kontext hinzuzufügen.
Der Wert umfasst alle eingehenden Verbindungen, einschließlich aller Shell-Verbindungen oder Verbindungen von anderen Servern, z. B. Replikatsatzmitgliedern oder Mongos-Instanzen.
verbindungen.verfügbar Die Anzahl der nicht verwendeten eingehenden Verbindungen, die verfügbar sind. Betrachten Sie diesen Wert in Kombination mit dem Wert von connection.current, um die Verbindungslast in der Datenbank zu verstehen, und im Dokument UNIX ulimit Settings, um weitere Informationen zu Systemschwellenwerten für verfügbare Verbindungen zu erhalten.
verbindungen.totalCreated Anzahl aller eingehenden Verbindungen, die zum Server erstellt wurden. Diese Nummer enthält Verbindungen, die inzwischen geschlossen wurden.
Verbindungsanzahl nach ClientIP mit Gesamt
Wir verwenden dies, um die Anzahl der Verbindungen von IPAddress mit einer Gesamtanzahl von Verbindungen anzuzeigen. Dies war wirklich hilfreich beim Debuggen eines Problems ... kommen Sie einfach dorthin, bevor Sie die maximale Anzahl an Verbindungen erreichen!
Für Mongo Shell:
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 })
Formatiert:
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 }
)
Beispielrückgabe:
{
"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
}
(die 192.xxx-Adressen bei der internen Überwachung von Atlas)
"Intern" sind interne Prozesse ohne externen Client. Sie können eine Liste davon mit folgendem anzeigen:
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()
Gibt keine der offenen und verfügbaren Verbindungen an, zeigt jedoch nicht die Verbindungen an, von denen aus der Client. Für weitere Informationen können Sie diesen Befehl verwendensudo lsof | grep mongod | grep TCP
. Ich brauche es, wenn ich die Replikation durchgeführt habe und der primäre Knoten viele Clientverbindungen hat, die größer als die sekundäre sind.Dies zeigt, dass derzeit fünf Verbindungen zum MongoDB-Port (27017) auf meinem Computer geöffnet sind. In meinem Fall stelle ich von einem Scalatra-Server aus eine Verbindung zu MongoDB her und verwende den MongoDB Casbah-Treiber. Unabhängig vom verwendeten Client werden jedoch dieselben TCP-Verbindungen angezeigt (sofern eine Verbindung über TCP / hergestellt wird) IP).
quelle
sudo lsof -i | grep mongod
Ich habe versucht, alle Verbindungen für die Mongo-Datenbank mit dem folgenden Befehl anzuzeigen.
Dieser Befehl kann jede TCP-Verbindung für Mongodb detaillierter anzeigen.
quelle
Sie können einfach verwenden
Mit dieser Funktion können Sie auch die IP-Adressen erkennen, die mit Ihrer Mongo-Datenbank verbunden sind
quelle
Sehen Sie auch in OS X die Verbindungen direkt auf der Netzwerkschnittstelle :
Keine Notwendigkeit,
grep
etc zu verwenden , verwenden Sie einfach dielsof
Argumente des.Informationen zu den Verbindungen in der CLI von MongoDb finden Sie in der Antwort von @ milan ( die ich gerade bearbeitet habe ).
quelle
Auch einige Details zu den Verbindungen mit:
db.currentOp(true)
Entnommen aus: https://jira.mongodb.org/browse/SERVER-5085
quelle
Stellen Sie mit der Mongo-Shell eine Verbindung zu MongoDB her und führen Sie den folgenden Befehl aus.
z.B:
quelle
quelle
MongoMonitoringController : { "numClientConnections" : 0 , "numAScopedConnections" : 0 , "totalInUse" : 0 , "totalAvailable" : 0 , "totalCreated" : 0 , "totalRefreshing" : 0 , "pools" : { } , "hosts" : { } , "replicaSets" : { } , "ok" : 1.0}
Entschuldigung, da dies ein alter Beitrag ist und derzeit mehr Optionen als zuvor verfügbar sind.
Ausgabebeispiel:
quelle
Stellen Sie vom lokalen System aus eine Verbindung mit Ihrer Mongodb-Instanz her
Sie werden über alle verbundenen Clients und deren Details informiert
quelle
Alternativ können Sie den Verbindungsstatus überprüfen, indem Sie sich bei Mongo Atlas anmelden und dann zu Ihrem Cluster navigieren.
quelle