MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Délai d'expiration de la connexion à MongoDb sur la machine virtuelle Azure

Après quelques recherches, voici mes considérations :

  • C'est généralement une bonne pratique d'implémenter une sorte de logique de nouvelle tentative sur chaque ressource à laquelle vous accédez sur Azure (base de données, machine virtuelle, ...). Pour MongoDb, il existe une implémentation partielle, vous devriez donc potentiellement écrire la vôtre. Voir aussi ce problème et ceci .
  • Si possible, toutes les ressources sur Azure doivent se trouver dans le même réseau virtuel Azure (de cette façon, toutes les connexions sont établies à l'aide d'une adresse IP privée Azure au lieu d'une adresse IP publique. Ceci est également utile pour des raisons de sécurité, car vous n'avez pas besoin d'ouvrir le point de terminaison au public.
  • Lors du déploiement de MongoDb sur Azure, essayez de suivre les directives officielles de MongoDb .
  • Dans ce cas particulier, vous devez définir le net.ipv4.tcp_keepalive_time à une valeur inférieure au tcp keep alive d'Azure, qui par défaut est de 240 secondes. De cette façon, la connexion est fermée et le pilote MongoDb peut intercepter cette condition et ouvrir une nouvelle connexion. Si la connexion est fermée par Azure, le pilote ne peut pas l'intercepter. Si vous souhaitez modifier ce paramètre sur Azure (non recommandé), vous pouvez le trouver dans la configuration de l'IP publique.

Dans mon environnement de développement, j'ai défini le net.ipv4.tcp_keepalive_time à 120 et maintenant tout semble bien fonctionner. Considérez que si vous hébergez MondoDb dans un conteneur Docker, vous devez définir ce paramètre sur l'hôte Docker.

Voici quelques autres liens utiles :