Какова команда для получения количества клиентов, подключенных к определенному серверу MongoDB?
Проверьте текущее количество подключений к MongoDb
Ответ 1
подключитесь к базе данных администратора и запустите 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>) },
соединения Документ, который сообщает о состоянии соединений. Используйте эти значения для оценки текущих требований к нагрузке и емкости сервера.
connections.current Количество входящих соединений от клиентов к серверу базы данных. Этот номер включает текущий сеанс оболочки. Рассмотрим значение connection.available, чтобы добавить больше контекста к этому datum.
Значение будет включать все входящие соединения, включая любые соединения с оболочкой или соединения с других серверов, такие как элементы набора реплик или экземпляры mongos.
connections.available Доступно количество неиспользуемых входящих соединений. Рассмотрим это значение в сочетании со значением connection.current, чтобы понять нагрузку на соединение в базе данных и документ UNIX ulimit Settings для получения дополнительной информации о системных порогах доступных соединений.
connections.totalCreated Количество всех входящих соединений, созданных на сервере. Этот номер включает соединения, которые с тех пор закрыты.
Ответ 2
db.serverStatus()
не дает никаких соединений openend и avail, но не показывает соединения, с которых клиент. Для получения дополнительной информации вы можете использовать эту команду sudo lsof | grep mongod | grep TCP
. Мне это нужно, когда я делал репликацию, а первичный node имел много клиентского соединения больше, чем вторичное.
$ 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) на моем компьютере. В моем случае я подключаюсь к MongoDB с сервера Scalatra, и я использую драйвер MongoDB Casbah, но вы увидите те же lsof TCP-соединения независимо от используемого клиента (при условии, что они подключаются с использованием TCP/IP).
Ответ 3
Я попытался просмотреть все подключения для базы данных mongo, выполнив следующую команду.
netstat -anp --tcp --udp | grep mongo
Эта команда может более подробно показать каждое tcp-соединение для mongodb.
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
Ответ 4
В OS X тоже посмотрите соединения прямо на сетевом интерфейсе, просто сделайте:
$ 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
. -
Также смотрите соединения в MongoDb CLI, смотрите ответ @milan (который я только что отредактировал).
Ответ 5
Количество подключений по ClientIP, всего
Мы используем это для просмотра количества соединений по IP-адресу с общим количеством соединений. Это было действительно полезно при отладке проблемы... просто доберитесь до того, как поразите максимальное количество соединений!
Для Монго Шелл:
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 на внутреннем мониторинге Atlas)
"Внутренние" - это внутренние процессы, у которых нет внешнего клиента. Вы можете просмотреть список этих с этим:
db.currentOp(true).inprog.filter(connection => !connection.client).map(connection => connection.desc);
Ответ 6
Также некоторые подробности о соединениях с: db.currentOp(true)
Ответ 7
Вы можете просто использовать
db.serverStatus().connections
Кроме того, эта функция может помочь вам определить IP-адреса, подключенные к вашей базе данных Mongo.
db.currentOp(true).inprog.forEach(function(x) { print(x.client) })
Ответ 8
db.runCommand({"connPoolStats": 1})
{
"numClientConnections" : 0,
"numAScopedConnections" : 0,
"totalInUse" : 0,
"totalAvailable" : 0,
"totalCreated" : 0,
"hosts" : {
},
"replicaSets" : {
},
"ok" : 1
}
Ответ 9
Подключитесь к MongoDB с помощью mongo-shell и выполните следующую команду.
db.serverStatus().connections
например:
mongo> db.serverStatus().connections
{ "current" : 3, "available" : 816, "totalCreated" : NumberLong(1270) }
Ответ 10
Соединитесь с вашим экземпляром mongodb из локальной системы
- sudo mongo "mongodb://MONGO_HOST_IP: 27017" --authenticationDatabase admin
Это позволит вам узнать всех подключенных клиентов и их детали
-
db.currentOp (правда)