Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Java Sync Driver
/ /

接続プール

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

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

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

すべての 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 ドライバーがプールされた接続を引き続き使用する最大時間をミリ秒単位で指定します。 値が0の場合、ドライバーがプールされた接続を開いたままにできる時間に上限がないことを示します。

デフォルト: 0

次のコードでは、最大接続プールサイズが 50 のクライアントを作成します。

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

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

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

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

方式
説明

addConnectionPoolListener()

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

applyConnectionString()

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

applySettings()

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

maintenanceFrequency()

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

maintenanceInitialDelay()

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

maxConnectionIdleTime()

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

maxConnectionLifeTime()

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

maxSize()

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

デフォルト: 100

maxWaitTime()

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

デフォルト: 2 minutes

minSize()

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

デフォルト: 0

注意

このmaxSizeminSizeの設定は、ドライバーを接続するクラスター内の各サーバーに適用されます。

たとえば、3 つのmongosサーバーを持つクラスターにドライバーを接続するとします。 つまり、各mongosサーバーには最大でmaxSize接続、少なくともminSize接続が存在します。

次の例では、applyToConnectionPoolSettings() メソッドをチェーンして、利用可能な接続を最大で 10 SECONDS 待機するようにスレッドを設定し、接続プールの maxSize を 200 に設定します。

MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder().applyConnectionString(
new ConnectionString("<your connection string>"))
.applyToConnectionPoolSettings(builder ->
builder.maxSize(50))
.build());

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

戻る

実行時間の制限

項目一覧