接続プールの概要
このドキュメントでは、接続プールを使用してアプリケーションと MongoDB インスタンスの間の接続を管理する方法について説明します。
接続プールとは?
定義
接続プールとはオープンですぐに使用できるデータベース接続のキャッシュであり、ドライバーによって維持されます。アプリケーションはこのプールからシームレスに接続を取得し、操作を実行して、プールに接続を戻すことができます。接続プールにはスレッドセーフという特徴があります。
接続プールの利点
接続プールは、アプリケーションのレイテンシと新しい接続が作成される回数を削減するのに役立ちます。
接続プールは、スタートアップ時に接続を作成します。アプリケーションは接続を手動でプールに返す必要はありません。代わりに、接続は自動的にプールに戻ります。
アクティブな接続と、一部非アクティブでも利用可能な接続があります。アプリケーションで接続をリクエストし、プールに利用可能な接続がある場合は、新しい接続を作成する必要はありません。
接続プールの作成と使用
ドライバーの オブジェクトのインスタンスを使用するMongoClient
ほとんどのドライバーは MongoClient
型のオブジェクトを提供します。
アプリケーションが多数の個別のクラスターに接続している場合を除き、アプリケーションごとに 1 つの MongoClient
インスタンスを使用します。各 MongoClient
インスタンスは、MongoClient
の作成時に指定された MongoDB クラスターまたはノードに対する自分の接続プールを管理します。MongoClient
オブジェクトはほとんどのドライバーでスレッドセーフです。
注意
MongoClient
インスタンスを、アプリケーションからグローバルにアクセスできる場所にストアします。
認証
LDAP で接続プールを使用するには、「 LDAP 接続プールの動作 」を参照してください。
シャーディングされたクラスターの接続プーリング
mongos
ルーターには、クラスター内の各ノードに対する接続プールがあります。シャーディングされたクラスター内の個々のノードへの接続の可用性は、レイテンシに影響します。操作は、接続が確立されるまで待つ必要があります。
接続プールの構成設定
接続プールの設定は、次のロケーションに指定できます。
アプリケーションの
MongoClient
インスタンスアプリケーション フレームワークの構成ファイル
設定
設定 | 説明 |
---|---|
ほとんどのドライバーは、デフォルトで、タイムアウトしない設定になっています。Java ドライバーの一部のバージョン(たとえば、3.7)では、デフォルトで デフォルト: | |
プールが同時に確立できる接続の最大数。
デフォルト: | |
このオプションはすべてのドライバーでサポートされているわけではありません。 デフォルト: ドライバーのドキュメントを参照してください。 | |
プールで開始されている接続の最大数。接続プールの最大接続数に達すると、新しい接続は デフォルト: | |
プールで開始されている接続の最小数。 デフォルト: | |
各 TaskExecutor 接続プールが特定の デフォルト: 2 64 - 1 パラメータはシャーディングされた配置にのみ適用されます。 | |
各 TaskExecutor 接続プールが構成サーバーに対して開始できるアウトバウンド接続の最大数を設定するための 設定値:
パラメータはシャーディングされた配置にのみ適用されます。 デフォルト: バージョン 6.0 で追加。 | |
各 TaskExecutor 接続プールが任意の デフォルト: パラメータはシャーディングされた配置にのみ適用されます。 | |
各 TaskExecutor 接続プールが構成サーバーに対して開始できるアウトバウンド接続の最小数を設定するための 設定値:
パラメータはシャーディングされた配置にのみ適用されます。 デフォルト: バージョン 6.0 で追加。 | |
TCP 接続でタイムアウトするまでの待機時間をミリ秒で表しています。 長時間実行するサーバー操作を防止するメカニズムとして ソケット タイムアウトの設定が短いと、サーバーが応答する前に操作でエラーが発生する可能性があります。 デフォルト: | |
接続可能になるまでスレッドが待機できる最大待機時間(ミリ秒)。 値が デフォルト: |