Efter lidt søgning her mine overvejelser:
- Det er normalt en god praksis at implementere en form for genforsøgslogik på hver ressource, du får adgang til på Azure (database, VM, ...). For MongoDb er der en delvis implementering, så du bør potentielt skrive din egen. Se også dette nummer og dette .
- Hvis det er muligt, skal alle ressourcer på Azure være i det samme virtuelle Azure-netværk (på denne måde oprettes alle forbindelser ved hjælp af Azure Private Ip i stedet for Public Ip. Dette er også nyttigt af sikkerhedsmæssige årsager, fordi du ikke behøver at åbne slutpunkt til offentligheden.
- Når du implementerer MongoDb på Azure, prøv at følge de officielle MongoDb-retningslinjer .
- I dette særlige tilfælde skal du indstille
net.ipv4.tcp_keepalive_time
til en værdi, der er lavere end tcp keep alive i Azure, som som standard er 240 sekunder. På denne måde lukkes forbindelsen, og MongoDb-driveren kan opsnappe denne tilstand og åbne en ny forbindelse. Hvis forbindelsen er lukket af Azure, kan driveren ikke opsnappe den. Hvis du vil ændre denne indstilling på Azure (anbefales ikke), kan du finde den i den offentlige IP-konfiguration.
I mit udviklingsmiljø har jeg indstillet net.ipv4.tcp_keepalive_time
til 120 og nu ser alt ud til at fungere fint. Overvej, at hvis du hoster MondoDb inde i en Docker-container, skal du indstille denne indstilling på Docker-værten.
Her nogle andre nyttige links:
- http://focusmatic. tumblr.com/post/39569711018/solving-mongodb-connection-losses-on-windows-azure
- https://docs.mongodb.org/ecosystem/platforms/windows -azurblå/
- https ://michaelmckeownblog.wordpress.com/2013/12/04/resolving-internal-ips-vs-dns-names-between-vms/
- https://gist.github.com/davideicardi/f2094c4c3f3e00fbd490
- MongoDB-forbindelsesproblemer på Azure
- MongoDB-forbindelsestimeout (Azure)