Подсчёт соединений по приложениям и клиентам (диагностика шторма подключений)
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.
Связанные материалы
- Анализ плана запроса с реальной статистикой выполнения (explain executionStats)
- Извлечение самых медленных запросов и форм запросов из данных профилировщика
- Поиск неиспользуемых индексов и их скрытие перед удалением (hideIndex)
- Измерение давления на кэш WiredTiger (заполнение, доля грязных данных, вытеснение потоками приложения)