Gestion des connexions

Les connexions à votre déploiement Databases for MongoDB utilisent des ressources, par conséquent, il est important de tenir compte du nombre de connexions dont vous avez besoin lorsque vous réglez les performances de votre déploiement. Utilisez la commande suivante dans l'interpréteur de commandes MongoDB ou dans un client MongoDB pour afficher le nombre maximum de connexions autorisées et l'utilisation actuelle.

  db.serverStatus().connections

Exemple de sortie :

{
  current: 33,
  available: 65503,
  totalCreated: 21858,
  rejected: 0,
  active: 9,
  threaded: 33,
  exhaustIsMaster: 0,
  exhaustHello: 6,
  awaitingTopologyChanges: 6
}
Zone Signification
current: 33 Total des connexions clients en cours, y compris les connexions inactives. C'est le nombre de clients connectés en ce moment.
available: 65503 Le nombre de connexions client supplémentaires que MongoDB peut accepter avant d'atteindre la limite (suggérant un maximum de ~65536).
totalCreated: 21858 Nombre total de connexions créées depuis le démarrage du serveur. Vous aide à comprendre le renouvellement des connexions.
rejected: 0 Nombre de tentatives de connexion rejetées en raison de l'atteinte de la limite.
threaded: 78 Nombre de threads qui gèrent actuellement les connexions. Correspond souvent à current.
active: 23 Nombre de connexions effectuant actuellement des opérations - le reste (78 - 23 = 55) est inactif.
exhaustIsMaster: 0 Concerne les anciens protocoles de découverte de serveurs (aujourd'hui remplacés). Habituellement 0.
exhaustHello: 19 Connexions de surveillance persistantes (par exemple, à partir de pilotes utilisant la commande hello dans la surveillance).
awaitingTopologyChanges: 19 Connexions en attente de modifications de la topologie (par exemple, pour la surveillance de la haute disponibilité dans les ensembles de répliques).

Remarque :

  • maximum connection = current + available
  • L'absence de connexions rejetées signifie que la limite n'est pas atteinte.
  • Par défaut, MongoDB autorise jusqu'à 65536 connexions.
  • Le dépassement du nombre limite de connexions pour votre déploiement peut rendre votre base de données inaccessible pour vos applications.

Terminer les connexions MongoDB

Pour mettre fin (tuer) aux connexions MongoDB, utilisez l'approche suivante, généralement via le shell MongoDB: Exécutez la commande suivante pour dresser la liste des opérations actives, y compris les connexions.

  db.currentOp(true).inprog

Sortie :

{
  "client" : "IP:PORT",
  "active" : true,
  "opid" : <opid>,
  ...
}

Une fois que vous avez trouvé le opid de l'opération (par exemple, opid: 12345), tuez-la en utilisant la commande suivante :

    db.killOp(12345)
  • Des privilèges d'administrateur sont requis pour exécuter currentOp et killOp.

MongoDB mise en commun des connexions

Un pool de connexions dans MongoDB est un cache de connexions réutilisables entre votre application et le serveur MongoDB. Plutôt que d'ouvrir et de fermer une nouvelle connexion pour chaque requête (ce qui est coûteux), l'application maintient un pool de connexions et les réutilise pour de multiples opérations. Le regroupement de connexions est l'un des moyens permettant de prévenir le dépassement du nombre limite de connexions et de garantir que les connexions à partir de vos applications sont gérées efficacement. Le pilote gère la création, la réutilisation et la fermeture des connexions en fonction de la demande et de la configuration.

Node.js (Mongoose ou pilote natif MongoDB ):

mongoose.connect(uri, {
  maxPoolSize: 100,      // default is 100
  minPoolSize: 10,
  maxIdleTimeMS: 30000,
  serverSelectionTimeoutMS: 5000
});

Python (PyMongo):

client = MongoClient(uri, maxPoolSize=100, minPoolSize=10)

Java:

MongoClientSettings settings = MongoClientSettings.builder()
    .applyToConnectionPoolSettings(builder ->
        builder.maxSize(100).minSize(10).maxConnectionIdleTime(30, TimeUnit.SECONDS))
    .build();
Terme Description
maxPoolSize (ou maxConnectionsPerHost) Le nombre maximum de connexions que le pool peut ouvrir au serveur MongoDB.
minPoolSize Le nombre minimum de connexions maintenues dans le pool.
waitQueueTimeoutMS Durée pendant laquelle l'application attend une connexion du pool lorsque tous les pools sont occupés.
maxIdleTimeMS Durée pendant laquelle une connexion peut rester inactive avant d'être fermée.