Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Kotlin Sync ドライバー
/ /

接続プール

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

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

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

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

新しい MongoClient をインスタンス化すると、クライアントはMongoDBトポロジー内のサーバーごとに 2 つのソケットを開き、サーバーの状態を監視します。

例、3 ノードのレプリカセットに接続されたクライアントは6 つの監視ソケットを開きます。アプリケーションがmaxPoolSize のデフォルト設定を使用し、 プライマリノードのみをクエリする場合、接続プールには最大で 106 個のソケットと 100 接続が存在できます。アプリケーションが読み込み設定 (read preference)を使用してセカンダリ ノードをクエリする場合、合計接続数は 306 になります。

効率には、プロセスごとに 1 回クライアントを作成し、すべての操作でそれを再利用します。レイテンシが増加するため、リクエストごとに新しいクライアントを作成することは避けます。

接続文字列または MongoClientSettingsオブジェクトのいずれかを使用して、接続プールの設定を指定できます。

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

次の表では、 接続文字列で設定できる接続プールオプションについて説明します。

オプション
説明

maxConnecting

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

デフォルト: 2

maxIdleTimeMS

接続が削除されて閉じられる前に、プール内でアイドル状態を維持できる最大ミリ秒数を設定します。

デフォルト: 0

maxPoolSize

プール内で開くことができる接続の最大数を設定します。接続プールに最大数の接続があるときに操作に新しい接続が必要な場合、その操作は新しい接続が開かれるまで待機します。

デフォルト: 100

minPoolSize

プール内で開くことができる接続の最小数を設定します。minPoolSize の値は maxPoolSize の値より小さくなければなりません。

デフォルト: 0

maxLifeTimeMS

接続を閉じる前にドライバーがプールされた接続を引き続き使用できる最大時間をミリ秒単位で設定します。値が 0 の場合、ドライバーがプールされた接続を開いたままにできる時間に上限がないことを示します。

デフォルト: 0

これらのオプションの詳細については、ConnectionString APIドキュメントを参照してください。

MongoClientSettingsオブジェクトで接続プール設定を指定するには、applyToConnectionPoolSettings() メソッドを MongoClientSettings ビルダに連鎖させます。ConnectionPoolSettings.Builder ブロックをパラメーターとして applyToConnectionPoolSettings() メソッドに渡します。

次の表では、ConnectionPoolSettings.Builder ブロックで使用して接続プールを構成するセッター メソッドについて説明します。

方式
説明

addConnectionPoolListener()

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

applyConnectionString()

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

applySettings()

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

maintenanceFrequency()

接続プールのメンテナンス ジョブを実行中頻度を設定します。

maintenanceInitialDelay()

接続プールで最初のメンテナンスジョブを実行中前に待機する時間を設定します。

maxConnectionIdleTime()

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

maxConnectionLifeTime()

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

maxSize()

プール内で開くことができる接続の最大数を設定します。

デフォルト: 100

maxWaitTime()

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

デフォルト : 2

minSize()

プール内で開くことができる接続の最小数を設定します。

デフォルト: 0

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

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

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

val uri = "mongodb://<host>:<port>/?maxPoolSize=50"
val client = MongoClient.create(uri)
val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("mongodb://<host>:<port>/"))
.applyToConnectionPoolSettings { builder ->
builder.maxSize(50)
}
.build()
)

接続プールの使用の詳細については、 MongoDB Serverマニュアルの接続プールの概要を参照してください。

戻る

MongoDB Server実行時間の制限

次へ

AWS Lambda

項目一覧