Подтвердить что ты не робот

Проверьте текущее количество подключений к MongoDb

Какова команда для получения количества клиентов, подключенных к определенному серверу MongoDB?

4b9b3361

Ответ 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);

Ответ 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 из локальной системы

  1. sudo mongo "mongodb://MONGO_HOST_IP: 27017" --authenticationDatabase admin

Это позволит вам узнать всех подключенных клиентов и их детали

  1. db.currentOp (правда)