質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Q&A

解決済

2回答

2735閲覧

MongoDBへの接続がないまま、ある程度時間が経過するとエラーが発生する

yamada_hanako

総合スコア6

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

0グッド

0クリップ

投稿2019/06/10 01:47

編集2019/06/24 00:51

前提・実現したいこと

C#とMongoDBでシステム開発をしています。

最近、アプリケーションからのMongoDBへの接続がないまま、ある程度時間が経過後(どの程度の時間かは不明)
アプリからのMongoDB接続時に以下のエラーが発生することがあります。
しかし、その後リトライすると問題なく接続に成功します。

System.AggregateException: One or more errors occurred. (An exception occurred while receiving a message from the server.) ---> MongoDB.Driver.MongoConnectionException: An exception occurred while receiving a message from the server. ---> System.IO.IOException: Unable to read data from the transport connection: Connection reset by peer. ---> System.Net.Sockets.SocketException: Connection reset by peer

リトライすればうまくいくことはわかっていますが、
driverやサーバ側の設定方法についてアドバイスをお願いします。
Spring+Mysqlで開発する際に、Commons DBCPの設定でvalidationQuery等のコネクションのバリデーションの
設定を行うので、同じような設定がないのか調べています。

補足情報(FW/ツールのバージョンなど)

MongoDBはバージョンは4.0.10を使用しておりreplica setの設定です。
C#のドライバは2.7.0を使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

C#のドライバは2.7.0から2.8.1に変更したところ、発生しなくなりました。
tamoto様、アドバイスありがとうございました。返事が遅くなり大変失礼いたしました。

投稿2019/06/24 00:52

yamada_hanako

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

MongoDB Driver は使ったことなく、ソースコードぱっと見での回答です。参考程度にお願いします。

MongoClient を生成する際に MongoClientSettings を作って渡すことができますが、
これに MaxConnectionIdleTimeMaxConnectionLifeTime というそれっぽいプロパティがあるので、設定してみたらどうでしょうか?
デフォルトではそれぞれ10分と30分のようです。

投稿2019/06/10 08:30

tamoto

総合スコア4103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamada_hanako

2019/06/11 00:55

アドバイスありがとうございます。 現状、MongoClientSettingsのMaxConnectionIdleTime、MaxConnectionLifeTime は未設定のため、デフォルト値が設定されていることまで確認しました。 こちら2つの値は一概に短くすればいいとか長くすればよいというわけではないですよね?
tamoto

2019/06/11 01:19

質問本文を見る限り、接続しっぱなしで一定時間経過すると強制切断を受けてエラーが出るというもののようなので、タイムアウトまでの猶予を長くすればエラーは起きづらくなるだろうという意図の回答です。 もちろんこれらに頼らず、コネクションを使い終わったところで切断して、使うときに接続し直すような丁寧なつくりにしても良いかと思いますが。ただし頻繁に接続を行うならおそらくパフォーマンスに影響します。
yamada_hanako

2019/06/11 06:51

なるほど、理解できました。ありがとうございます。 MongoClientSettingsのMaxConnectionIdleTime、MaxConnectionLifeTimeの調整を試みます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問