DBAtlas · Atlas d'exploitation des bases de données

Compter les connexions par application et client (diagnostic de tempête de connexions)

MongoDBPerformances

Commande

// 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 }
])

Ce que fait la commande

Affiche le nombre total et disponible de connexions sur le serveur, puis regroupe les connexions ouvertes par appName et IP client avec le nombre de connexions actives.

Quand l'utiliser

Quand le nombre de connexions bondit soudainement, sur des erreurs 'connection refused' ou de timeout du pool, pour trouver quel serveur d'application fuit des connexions.

Attention

idleConnections: true renvoie aussi toutes les connexions inactives, donc sur les systèmes avec des milliers de connexions la sortie est volumineuse ; c'est pourquoi la synthèse avec $group est importante. Les lignes avec un client null sont des threads internes. Chaque connexion consomme environ 1 MB de mémoire ; une tempête de connexions fait aussi croître la mémoire hors du cache WiredTiger.

Ouvrir dans DBAtlas →

Voir aussi