Nach einigem Suchen hier meine Überlegungen:
- In der Regel empfiehlt es sich, eine Art Wiederholungslogik für jede Ressource zu implementieren, auf die Sie in Azure zugreifen (Datenbank, VM usw.). Für MongoDb gibt es eine teilweise Implementierung, also sollten Sie möglicherweise Ihre eigene schreiben. Siehe auch diese Ausgabe und dies .
- Nach Möglichkeit sollten sich alle Ressourcen in Azure im selben virtuellen Azure-Netzwerk befinden (auf diese Weise werden alle Verbindungen über die private Azure-IP anstelle der öffentlichen IP hergestellt. Dies ist auch aus Sicherheitsgründen nützlich, da Sie den Endpunkt nicht öffnen müssen an die Öffentlichkeit.
- Beim Bereitstellen von MongoDb auf Azure versuchen Sie, die offiziellen MongoDb-Richtlinien .
- In diesem speziellen Fall sollten Sie die
net.ipv4.tcp_keepalive_time
setzen auf einen niedrigeren Wert als den TCP-Keep-Alive von Azure, der standardmäßig 240 Sekunden beträgt. Auf diese Weise wird die Verbindung geschlossen und der MongoDb-Treiber kann diesen Zustand abfangen und eine neue Verbindung öffnen. Wenn die Verbindung von Azure geschlossen wird, kann der Treiber sie nicht abfangen. Wenn Sie diese Einstellung in Azure ändern möchten (nicht empfohlen), finden Sie sie in der öffentlichen IP-Konfiguration.
In meiner Entwicklungsumgebung habe ich die net.ipv4.tcp_keepalive_time
eingestellt auf 120 und jetzt scheint alles gut zu funktionieren. Beachten Sie, dass Sie diese Einstellung auf dem Docker-Host festlegen sollten, wenn Sie MondoDb in einem Docker-Container hosten.
Hier einige weitere nützliche Links:
- http://focusmatic. tumblr.com/post/39569711018/solving-mongodb-connection-losses-on-windows-azure
- https://docs.mongodb.org/ecosystem/platforms/windows -azur/
- https ://michaelmckeownblog.wordpress.com/2013/12/04/resolving-internal-ips-vs-dns-names-between-vms/
- https://gist.github.com/davideicardi/f2094c4c3f3e00fbd490
- MongoDB-Verbindungsprobleme auf Azure
- MongoDB-Verbindungszeitüberschreitungen (Azure)