Azure Cosmos DB .NET SDK v3 の接続構成を調整する

重要

この記事の情報は、Azure Cosmos DB .NET SDK v3 のみを対象としています。 詳細については、Azure Cosmos DB SQL SDK 接続モード、Azure Cosmos DB .NET SDK v3 リリース ノートNuget リポジトリ、Azure Cosmos DB .NET SDK v3 トラブルシューティング ガイドを参照してください。 v3 より前のバージョンを現在使用している場合、v3 へのアップグレードのヘルプについては、Azure Cosmos DB .NET SDK v3 への移行ガイドを参照してください。

Azure Cosmos DB は、高速で柔軟性に優れた分散データベースです。待機時間とスループットが保証されており、シームレスにスケーリングできます。 Azure Cosmos DB でデータベースをスケーリングするために、アーキテクチャを大きく変更したり、複雑なコードを記述したりする必要はありません。 スケールアップとスケールダウンは、API 呼び出しか SDK メソッド呼び出しを 1 回行うだけで簡単に実行できます。 ただし、Azure Cosmos DB にはネットワーク呼び出しによってアクセスするため、Azure Cosmos DB .NET SDK v3 を使用するときに最高のパフォーマンスを実現するために、接続構成を調整することができます。

接続の構成

Note

Azure Cosmos DB .NET SDK v3 では、ほとんどの場合、"直接モード" が大部分のワークロードでデータベースのパフォーマンスを向上させるための最適な選択肢です。

さまざまな接続オプションについては、接続モードに関する記事を参照してください。

直接接続モード

.NET SDK の既定の接続モードは直接です。 直接モードでは、要求は TCP プロトコルを使用して行われます。 内部的には、直接モードで特別なアーキテクチャを使用してネットワーク リソースを動的に管理し、最良のパフォーマンスを実現します。 直接モードで使用されるクライアント側のアーキテクチャにより、予測可能なネットワーク使用率と Azure Cosmos DB レプリカへの多重アクセスが可能になります。 アーキテクチャの詳細については、「直接モード接続アーキテクチャ」を参照してください。

CosmosClientOptionsCosmosClient インスタンスを作成するときに、接続モードを構成します。

string connectionString = "<your-account-connection-string>";
CosmosClient client = new CosmosClient(connectionString,
new CosmosClientOptions
{
    ConnectionMode = ConnectionMode.Gateway // ConnectionMode.Direct is the default
});

直接接続モードのカスタマイズ

直接モードは、CosmosClient コンストラクターに渡される CosmosClientOptions を通してカスタマイズできます。 ユーザーはトレードオフの理解に自信が有りそれが必要な場合を除き、これらを変更しないようにすることをお勧めします。

構成オプション Default 推奨 詳細
EnableTcpConnectionEndpointRediscovery true true これは、サーバーから閉じる接続の検出を有効にするフラグを表します。
IdleTcpConnectionTimeout 既定では、アイドル状態の接続は無期限に開いた状態になります。 20m-24h これは、その時間が経過後に未使用の接続が閉じられるアイドル時間の長さを表します。 推奨値は 20 分から 24 時間です。
MaxRequestsPerTcpConnection 30 30 これは、1 つの TCP 接続で同時に許可される要求の数を表します。 これより多くの要求が同時に送信されると、直接/TCP クライアントは追加の接続を開きます。 この値を、接続あたりの要求数が 4 未満または 50 から 100 を超えるように設定しないでください。 接続ごとの並列処理の度合が高い、要求または応答が大きい、または待機時間の要件が厳しいアプリケーションでは、接続あたりの要求数が 8 から 16 のときにパフォーマンスが向上する可能性があります。
MaxTcpConnectionsPerEndpoint 65,535 65,535 これは、各 Cosmos DB バックエンドに対して開くことができる TCP 接続の最大数を表します。 MaxRequestsPerTcpConnection と合わせて、この設定は、1 つの Cosmos DB バックエンドに同時に送信される要求の数を制限します (MaxRequestsPerTcpConnection と MaxTcpConnectionPerEndpoint の掛け算)。 値は 16 以上でなければなりません。
OpenTcpConnectionTimeout 5 秒 1 秒 これは、接続の確立の試行に許容される時間の長さを表します。 時間が経過すると、試行が取り消され、エラーが返されます。 タイムアウトが長いほど、再試行と失敗が遅延します。
PortReuseMode PortReuseMode.ReuseUnicastPort PortReuseMode.ReuseUnicastPort これは、トランスポート スタックによって使用されるクライアント ポート再利用ポリシーを表します。

ゲートウェイ接続モードのカスタマイズ

ゲートウェイ モードは、CosmosClient コンストラクターに渡される CosmosClientOptions を通してカスタマイズできます。 ユーザーはトレードオフの理解に自信が有りそれが必要な場合を除き、これらを変更しないようにすることをお勧めします。

構成オプション Default 推奨 詳細
GatewayModeMaxConnectionLimit 50 50 これは、Azure Cosmos DB サービスのターゲット サービス エンドポイントに対して許可されるコンカレント接続の最大数を表します。
webProxy null null これは、Web 要求に使用されるプロキシ情報を表します。

次のステップ

.NET SDK のパフォーマンスに関するヒントの詳細については、「Azure Cosmos DB .NET SDK v3 のパフォーマンスに関するヒント」を参照してください。