sql >> Database >  >> NoSQL >> MongoDB

Time-out voor verbinding met MongoDb op Azure VM

Na wat zoeken hier mijn overwegingen:

  • Het is meestal een goede gewoonte om een ​​soort logica voor opnieuw proberen te implementeren op elke resource waartoe u toegang hebt op Azure (database, VM, ...). Voor MongoDb is er een gedeeltelijke implementatie, dus u moet mogelijk uw eigen implementatie schrijven. Zie ook dit nummer en dit .
  • Indien mogelijk moeten alle resources op Azure zich in hetzelfde Azure Virtual Network bevinden (op deze manier worden alle verbindingen gemaakt met behulp van Azure Private Ip in plaats van Public Ip. Dit is ook handig om veiligheidsredenen omdat u het endpoint niet hoeft te openen voor het publiek.
  • Als u MongoDb op Azure implementeert, probeer dan de officiële MongoDb-richtlijnen .
  • In dit specifieke geval moet u de net.ipv4.tcp_keepalive_time instellen naar een waarde die lager is dan de tcp keep alive van Azure, die standaard 240 seconden is. Op deze manier wordt de verbinding gesloten en kan de MongoDb-driver deze voorwaarde onderscheppen en een nieuwe verbinding openen. Als de verbinding wordt gesloten door Azure, kan het stuurprogramma deze niet onderscheppen. Als u deze instelling op Azure wilt wijzigen (niet aanbevolen), kunt u deze vinden in de openbare IP-configuratie.

In mijn ontwikkelomgeving heb ik de net.ipv4.tcp_keepalive_time tot 120 en nu lijkt alles goed te werken. Bedenk dat als u MondoDb in een Docker-container host, u deze instelling op de Docker-host moet instellen.

Hier enkele andere nuttige links:



  1. MongoDB mongorestore-fout:locale::facet::_S_create_c_locale naam niet geldig

  2. Volgorde van sleutelwaarden in mongoDb

  3. Wat zijn de belangrijkste verschillen tussen Redis Pub/Sub en Redis Stream?

  4. Een array van arrays opvragen in MongoDB