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:
- http://focusmatic. tumblr.com/post/39569711018/solving-mongodb-connection-losses-on-windows-azure
- https://docs.mongodb.org/ecosystem/platforms/windows -azuurblauw/
- https ://michaelmckeownblog.wordpress.com/2013/12/04/resolving-internal-ips-vs-dns-names-between-vms/
- https://gist.github.com/davideicardi/f2094c4c3f3e00fbd490
- MongoDB-verbindingsproblemen op Azure
- MongoDB-verbindingstime-outs (Azure)