Overview
このガイドでは、 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タブを選択します。
次の表では、 接続文字列で設定できる接続プールオプションについて説明します。
オプション | 説明 |
---|---|
| プールが同時に確立できる接続の最大数を設定します。 デフォルト: |
| 接続が削除されて閉じられる前に、プール内でアイドル状態を維持できる最大ミリ秒数を設定します。 デフォルト: |
| プール内で開くことができる接続の最大数を設定します。接続プールに最大数の接続があるときに操作に新しい接続が必要な場合、その操作は新しい接続が開かれるまで待機します。 デフォルト: |
| プール内で開くことができる接続の最小数を設定します。 デフォルト: |
| 接続を閉じる前にドライバーがプールされた接続を引き続き使用できる最大時間をミリ秒単位で設定します。値が デフォルト: |
これらのオプションの詳細については、ConnectionString APIドキュメントを参照してください。
MongoClientSettings
オブジェクトで接続プール設定を指定するには、applyToConnectionPoolSettings()
メソッドを MongoClientSettings
ビルダに連鎖させます。ConnectionPoolSettings.Builder
ブロックをパラメーターとして applyToConnectionPoolSettings()
メソッドに渡します。
次の表では、ConnectionPoolSettings.Builder
ブロックで使用して接続プールを構成するセッター メソッドについて説明します。
方式 | 説明 |
---|---|
| 接続プール関連のイベントのリスナーを追加します。 |
|
|
|
|
| 接続プールのメンテナンス ジョブを実行中頻度を設定します。 |
| 接続プールで最初のメンテナンスジョブを実行中前に待機する時間を設定します。 |
| 接続が閉じられる前にアイドル状態を維持できる最大時間を設定します。 |
| プールされた接続が閉じられる前に開くことができる最大時間を設定します。 |
| プール内で開くことができる接続の最大数を設定します。 デフォルト: |
| 接続可能になるまで待機する最大時間を設定します。 デフォルト : |
| プール内で開くことができる接続の最小数を設定します。 デフォルト: |
これらのメソッドの詳細については、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マニュアルの接続プールの概要を参照してください。