Contar conexões por aplicação e cliente (diagnóstico de connection storm)
MongoDBDesempenhoComando
// 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 }
])O que faz
Mostra o total de conexões e as disponíveis no servidor e depois agrupa as conexões abertas por appName e IP do cliente, junto com quantas estão ativas.
Quando usar
Quando o número de conexões salta de repente, em erros de 'connection refused' ou timeout do pool, para descobrir qual servidor de aplicação vaza conexões.
Atenção
idleConnections: true também retorna todas as conexões ociosas, então em sistemas com milhares de conexões a saída é grande; por isso resumir com $group é importante. Linhas com cliente null são threads internas. Cada conexão consome cerca de 1 MB de memória; um connection storm também aumenta a memória fora do cache do WiredTiger.
Relacionados
- Inspecionar um plano de consulta com estatísticas reais de execução (explain executionStats)
- Extrair as consultas e query shapes mais lentas dos dados do profiler
- Encontrar índices não utilizados e ocultá-los antes de remover (hideIndex)
- Medir a pressão no cache do WiredTiger (ocupação, taxa de dirty, eviction pela aplicação)