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

接続プール

このガイドでは、 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ドキュメント を参照してください。

applyToConnectionPoolSettings() メソッドをチェーンして、ドライバーが接続プールを管理する方法を変更します。

次の表では、 設定に連鎖させてドライバーの動作を変更できる方法について説明します。

方式
説明

addConnectionPoolListener()

接続プール関連のイベントのリスナーを追加します。

applyConnectionString()

ConnectionStringオブジェクトの設定を使用します。

applySettings()

ConnectionPoolSettingsオブジェクトで指定された接続プール設定を使用します。

connectionPoolListenerList()

接続プールリスナーの一覧を設定します。

maintenanceFrequency()

メンテナンス ジョブを実行する頻度を設定します。

maintenanceInitialDelay()

最初のメンテナンス ジョブを実行する前に待機する時間を設定します。

maxConnectionIdleTime()

接続が閉じられる前にアイドル状態を維持できる最大時間を設定します。

maxConnectionLifeTime()

プールされた接続が閉じられる前に存在できる最大時間を設定します。

maxConnecting()

プールが同時に確立できる接続の最大数を設定します。

maxSize()

接続プールに関連付けられた最大接続数を設定します。

デフォルト: 100

maxWaitTime()

接続可能になるまで待機する最大時間を設定します。

デフォルト: 2 minutes

minSize()

接続プールに関連付けられる接続の最小数を設定します。

デフォルト: 0

これらのメソッドの詳細については、ConnectionPoolSettings.Builder APIドキュメント を参照してください。

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

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

ConnectionString connectionString = new ConnectionString("mongodb://<host>:<port>/?maxPoolSize=50");
try (MongoClient mongoClient = MongoClients.create(connectionString)) {
}
try (MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder().applyConnectionString(
new ConnectionString("<your connection string>"))
.applyToConnectionPoolSettings(builder ->
builder.maxSize(50))
.build())) {

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