Setelah beberapa pencarian di sini pertimbangan saya:
- Biasanya merupakan praktik yang baik untuk menerapkan semacam logika coba lagi pada setiap sumber daya yang Anda akses di Azure (basis data, VM, ...). Untuk MongoDb ada implementasi parsial sehingga Anda harus berpotensi menulis sendiri. Lihat juga masalah ini dan ini .
- Jika memungkinkan semua sumber daya di Azure harus berada dalam Jaringan Virtual Azure yang sama (dengan cara ini semua koneksi dibuat menggunakan Ip Pribadi Azure, bukan Ip Publik. Ini juga berguna untuk alasan keamanan karena Anda tidak perlu membuka titik akhir untuk umum.
- Saat menerapkan MongoDb di Azure coba ikuti pedoman MongoDb .
- Dalam kasus khusus ini Anda harus mengatur
net.ipv4.tcp_keepalive_time
ke nilai yang lebih rendah dari tcp keep living Azure, yang secara default adalah 240 detik. Dengan cara ini koneksi ditutup dan driver MongoDb dapat mencegat kondisi ini dan membuka koneksi baru. Jika koneksi ditutup oleh Azure, driver tidak dapat mencegatnya. Jika Anda ingin mengubah pengaturan ini di Azure (tidak disarankan), Anda dapat menemukannya di dalam konfigurasi Ip Publik.
Di lingkungan pengembangan saya, saya telah mengatur net.ipv4.tcp_keepalive_time
ke 120 dan sekarang semuanya tampak berfungsi dengan baik. Pertimbangkan bahwa jika Anda menghosting MondoDb di dalam wadah Docker, Anda harus menyetel setelan ini di host Docker.
Berikut beberapa tautan bermanfaat lainnya:
- http://focusmatic. tumblr.com/post/39569711018/solving-mongodb-connection-losses-on-windows-azure
- https://docs.mongodb.org/ecosystem/platforms/windows -biru/
- https ://michaelmckeownblog.wordpress.com/2013/12/04/resolve-internal-ips-vs-dns-names-between-vms/
- https://gist.github.com/davideicardi/f2094c4c3f3e00fbd490
- Masalah koneksi MongoDB di Azure
- Waktu tunggu koneksi MongoDB (Azure)