DBAtlas · Atlas de operações de banco de dados

Contar conexões por aplicação e cliente (diagnóstico de connection storm)

MongoDBDesempenho

Comando

// 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.

Abrir no DBAtlas →

Relacionados