ここでいくつか検索した後、私の考慮事項:
- 通常、Azureでアクセスするすべてのリソース(データベース、VMなど)に何らかの再試行ロジックを実装することをお勧めします。 MongoDbには部分的な実装があるため、独自に作成する必要があります。 この問題
も参照してください。 および
これ 。 - 可能であれば、Azure上のすべてのリソースを同じAzure仮想ネットワークに配置する必要があります(このようにして、すべての接続はパブリックIPではなくAzureプライベートIPを使用して行われます。これは、エンドポイントを開く必要がないため、セキュリティ上の理由からも役立ちます。一般に公開します。
- AzureにMongoDbをデプロイするときは、公式のMongoDbガイドライン> 。
- この特定のケースでは、
net.ipv4.tcp_keepalive_time
を設定する必要があります Azureのtcpキープアライブよりも低い値に設定すると、デフォルトでは240秒になります。このようにして接続が閉じられ、MongoDbドライバーはこの状態をインターセプトして新しい接続を開くことができます。 Azureによって接続が閉じられている場合、ドライバーはそれをインターセプトできません。 Azureでこの設定を変更する場合(非推奨)、パブリックIP構成内で見つけることができます。
私の開発環境では、net.ipv4.tcp_keepalive_time
を設定しました 120になり、今ではすべてが正常に機能しているようです。 Dockerコンテナ内でMondoDbをホストする場合は、Dockerホストでこの設定を設定する必要があることを考慮してください。
ここに他のいくつかの便利なリンクがあります:
- 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
- AzureでのMongoDB接続の問題
- MongoDB接続タイムアウト(Azure)