DBAtlas · Атлас эксплуатации баз данных

Подсчёт соединений по приложениям и клиентам (диагностика шторма подключений)

MongoDBПроизводительность

Команда

// Total, available and rejected connection counts:
db.serverStatus().connections
// Count connections by application name and client IP:
db.getSiblingDB("admin").aggregate([
  { $currentOp: { allUsers: true, idleConnections: true } },
  { $group: { _id: { app: "$appName", client: { $arrayElemAt: [{ $split: ["$client", ":"] }, 0] } }, conns: { $sum: 1 }, active: { $sum: { $cond: ["$active", 1, 0] } } } },
  { $sort: { conns: -1 } },
  { $limit: 20 }
])

Что делает

Показывает общее и доступное число соединений на сервере, затем группирует открытые соединения по appName и IP клиента с указанием, сколько из них активны.

Когда использовать

Когда число соединений внезапно скачет, при ошибках 'connection refused' или таймаутах пула, чтобы найти, какой сервер приложений допускает утечку соединений.

Внимание

idleConnections: true возвращает также все простаивающие соединения, поэтому на системах с тысячами соединений вывод большой; поэтому важно сводить его через $group. Строки с пустым client — внутренние потоки. Каждое соединение потребляет примерно 1 MB памяти; шторм подключений увеличивает и память вне кэша WiredTiger.

Открыть в DBAtlas →

Связанные материалы