Docs Menu
Docs Home
/ / /
C++ ドライバー

接続プール

項目一覧

  • mongocxx::client vs mongocxx::pool
  • 接続プールとスレッドの安全性
  • 接続プールの構成
  • 接続プールの使用

スタンドアロンのmongocxx::clientは、シングルスレッド アルゴリズムを使用して、接続されているクラスターの状態を監視します。 レプリカセットに接続すると、スレッドは60秒ごとに「 World を停止 」してクラスターのステータスを確認します。 一方、 mongocxx::poolは、クラスター内の各サーバーに対して個別のバックグラウンド スレッドを使用します。各スレッドは、 10秒ごとに監視対象サーバーのステータスをチェックします。 「世界を停止」するのではなく、バックグラウンドでクラスターを監視する方がパフォーマンス上の利点があるため、アプリケーションが複数のスレッドにアクセスする場合は、スタンドアロン クライアントのセットではなく、 mongocxx::poolを使用することを強くお勧めします。は 1 つのスレッドを使用します。

mongocxx::poolは複数のスレッドで共有でき、クライアントの作成に使用できます。 ただし、各mongocxx::clientは 1 つのスレッドでのみ使用できます。 mongocxx::clientをスレッドセーフに使用する方法の詳細については、 スレッドの安全性ドキュメントを参照してください。

接続プール内のクライアント数は、URI パラメータminPoolSizemaxPoolSizeによって決まります。 minPoolSizemaxPoolSizeオプションは、ドライバーがアイドル状態または完全に使用されている場合に のリソース使用量のターゲットを設定します。 完全に使用される場合、最大 MaxPoolSize のクライアントが使用できます。 クライアントがプールに返されると、プールが minPoolSize に再度縮小されるまで、クライアントは破棄されます。

maxPoolSize
mongocx:: プール(プール内とチェックアウトの両方)によって作成されたクライアントの最大数。 デフォルト値は100です。 上限に達すると、 mongocx::Pool::acquire は、別のスレッドがプールにクライアントを返すまでブロックします。
minPoolSize
アイドル状態の場合のプールのターゲット サイズを設定します。 この数のクライアントが作成されると、プール内のこの数のクライアントよりも少なくなることはありません。 minPoolSize を超える追加のクライアントが作成された場合、プールに返されるとそれらは破棄されます。 デフォルト値の「 0 」は、この機能を無効にします。 無効にしても、クライアントは破棄されません。

接続プールを使用するには、まず URI を引数として渡してmongocxx::poolを作成します。 次に、 mongocxx::pool::acquireを呼び出してプールからクライアントを受け取ります。 クライアントは、範囲を超えると自動的にプールに返されます。

接続プールの例を 参照 詳細については、「 」を参照してください。

戻る

スレッドとフォークの安全性