AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

接続プール

このガイドでは、Java Reactive Streams ドライバーが接続プールを使用してMongoDB配置への接続を管理する方法と、アプリケーションで接続プール設定を構成する方法について学習できます。

接続プールは、Java Reactive Streams ドライバーによって維持されるオープンデータベース接続のキャッシュです。アプリケーションがMongoDBへの接続をリクエストすると、Java Reactive Streams ドライバーはプールから接続をシームレスに取得し、操作を実行し、再利用のために接続をプールに返します。

接続プールは、Java Reactive Streams ドライバーによって新しい接続が作成される回数とアプリケーションのレイテンシを削減するのに役立ちます。

すべてのMongoClientインスタンスには、MongoDB トポロジー内の各サーバーに対する接続プールが組み込まれています。 接続プールはオンデマンドでソケットを開き、マルチスレッド アプリケーションで同時 MongoDB 操作をサポートします。

maxPoolSize オプションは各接続プールの最大サイズを設定します。デフォルトは 100 です。サーバーへの使用中の接続数が maxPoolSize の値に達した場合、そのサーバーへの次のリクエストは、接続が利用可能になるまで待機します。

各 MongoClientインスタンスは、サーバーの状態を監視するためにMongoDBトポロジー内のサーバーごとにさらに 2 つのソケットを開きます。

接続プールの設定を指定するには、接続文字列を使用するか、MongoClientSettingsオブジェクトを MongoClients.create() メソッドに渡すことで指定できます。

対応する構文を確認するには、Connection String タブまたは MongoClientSettingsタブを選択します。

以下は、接続プールを構成するために使用できる接続文字列設定です。

設定
説明

maxConnecting

プールが同時に確立できる接続の最大数。

デフォルト: 2

maxIdleTimeMS

このオプションはすべてのドライバーでサポートされているわけではありません。この値は、アプリケーションの予想されるアイドル期間よりも高く、ファイアウォールまたはプロキシの接続タイムアウトよりは低く設定して、予期しない切断を防ぐために、

デフォルト: 0

maxPoolSize

プールで開始されている接続の最大数。接続プールで maxPoolSize の接続が開いているときに操作に新しい接続が必要な場合、新しい操作は新しい接続が開くことを待機します。この待機時間を制限するには、単一のタイムアウト設定を使用します。詳細については、 「サーバー実行時間の制限」 のガイドを参照してください。

デフォルト: 100

minPoolSize

プールで開始されている接続の最小数。minPoolSize の値は maxPoolSize の値より小さくなければなりません。

デフォルト: 0

waitQueueTimeoutMS (非推奨)

このオプションは非推奨です。このタイムアウトは、代わりにクライアントレベルのタイムアウトを設定することで構成できます。

接続が利用可能になるまで操作が待機できる最大待機時間(ミリ秒)。値が 0 の場合、制限がないことを意味します。

デフォルト: 120000 ( 120秒)

maxLifeTimeMS

Java Reactive Streams ドライバーがプールされた接続を閉じる前に引き続き使用する最大時間をミリ秒単位で指定します。値 0 は、ドライバーがプールされた接続を開いておく期間に上限がないことを示します。

デフォルト: 0

これらのパラメーターの詳細については、ConnectionString APIドキュメント を参照してください。

次の例では、最大サイズが 50 接続の接続プールを作成する方法を示します。

対応する構文を確認するには、Connection String タブまたは MongoClientSettingsタブを選択します。

ConnectionString connectionString = new ConnectionString("mongodb://<host>:<port>/?maxPoolSize=50");try (MongoClient mongoClient = MongoClients.create(connectionString)) {}

接続プールの使用の詳細については、サーバー マニュアルの 接続プール に関するドキュメントを参照してください。