Po nějakém hledání zde mé úvahy:
- Obvykle je dobrým zvykem implementovat nějaký druh logiky opakování na každý prostředek, ke kterému přistupujete v Azure (databáze, virtuální počítač, ...). Pro MongoDb existuje částečná implementace, takže byste si měli potenciálně napsat vlastní. Viz také tento problém a toto .
- Pokud je to možné, všechny prostředky v Azure by měly být ve stejné virtuální síti Azure (takto jsou všechna připojení vytvořena pomocí Azure Private Ip namísto Public IP. To je také užitečné z bezpečnostních důvodů, protože nemusíte otevírat koncový bod veřejnosti.
- Při nasazování MongoDb na Azure se snažte řídit oficiálními pokyny MongoDb .
- V tomto konkrétním případě byste měli nastavit
net.ipv4.tcp_keepalive_time
na hodnotu nižší, než je tcp keep alive Azure, což je ve výchozím nastavení 240 sekund. Tímto způsobem je připojení uzavřeno a ovladač MongoDb může tento stav zachytit a otevřít nové připojení. Pokud je připojení uzavřeno službou Azure, ovladač jej nemůže zachytit. Pokud chcete toto nastavení změnit v Azure (nedoporučuje se), najdete to v konfiguraci Public IP.
Ve svém vývojovém prostředí jsem nastavil net.ipv4.tcp_keepalive_time
na 120 a nyní se zdá, že vše funguje dobře. Zvažte, že pokud hostujete MondoDb v kontejneru Docker, měli byste toto nastavení nastavit na hostiteli Docker.
Zde jsou některé další užitečné odkazy:
- http://focusmatic. tumblr.com/post/39569711018/solving-mongodb-connection-losses-on-windows-azure
- https://docs.mongodb.org/ecosystem/platforms/windows -azurová/
- https ://michaelmckeownblog.wordpress.com/2013/12/04/resolving-internal-ips-vs-dns-names-between-vms/
- https://gist.github.com/davideicardi/f2094c4c3f3e00fbd490
- Problémy s připojením MongoDB v Azure
- Časové limity připojení MongoDB (Azure)