Sau một số tìm kiếm ở đây, tôi đã cân nhắc:
- Một phương pháp hay là thực hiện một số loại logic thử lại trên mọi tài nguyên mà bạn truy cập trên Azure (cơ sở dữ liệu, máy ảo, ...). Đối với MongoDb, có một phần triển khai, vì vậy bạn có thể nên viết riêng của mình. Xem thêm sự cố này và cái này .
- Nếu có thể, tất cả tài nguyên trên Azure phải nằm trong cùng một Mạng ảo Azure (theo cách này, tất cả các kết nối được thực hiện bằng Azure Private Ip thay vì Public Ip. Điều này cũng hữu ích vì lý do bảo mật vì bạn không cần mở endpoint cho công chúng.
- Khi triển khai MongoDb trên Azure, hãy cố gắng tuân theo nguyên tắc chính thức của MongoDb .
- Trong trường hợp cụ thể này, bạn nên đặt
net.ipv4.tcp_keepalive_time
đến một giá trị thấp hơn tcp giữ cho Azure tồn tại, theo mặc định là 240 giây. Bằng cách này, kết nối được đóng và trình điều khiển MongoDb có thể chặn điều kiện này và mở một kết nối mới. Nếu kết nối bị đóng bởi Azure, trình điều khiển không thể chặn nó. Nếu muốn thay đổi cài đặt này trên Azure (không được khuyến nghị), bạn có thể tìm cài đặt này bên trong cấu hình Ip công khai.
Trong môi trường phát triển của mình, tôi đã đặt net.ipv4.tcp_keepalive_time
lên 120 và bây giờ mọi thứ dường như hoạt động tốt. Hãy xem xét rằng nếu bạn lưu trữ MondoDb bên trong vùng chứa Docker, bạn nên đặt cài đặt này trên máy chủ Docker.
Dưới đây là một số liên kết hữu ích khác:
- http:// focusmatic. tumblr.com/post/39569711018/solving-mongodb-connection-losses-on-windows-azure
- https://docs.mongodb.org/ecosystem/platforms/windows -azure /
- https ://michaelmckeownblog.wordpress.com/2013/12/04/resolving-internal-ips-vs-dns-names-between-vms/
- https://gist.github.com/davideicardi/f2094c4c3f3e00fbd490
- Sự cố kết nối MongoDB trên Azure
- Hết giờ kết nối MongoDB (Azure)