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 レプリカへの多重アクセスが可能になります。 アーキテクチャの詳細については、「直接モード接続アーキテクチャ」を参照してください。
CosmosClientOptions
で CosmosClient
インスタンスを作成するときに、接続モードを構成します。
CosmosClient client = new CosmosClient(
"<nosql-account-endpoint>",
tokenCredential
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 要求に使用されるプロキシ情報を表します。 |
注意
「Azure Cosmos DB .NET SDK v3 のゲートウェイ モードを使用する場合のベスト プラクティス」も参照してください。
次のステップ
.NET SDK のパフォーマンスに関するヒントの詳細については、「Azure Cosmos DB .NET SDK v3 のパフォーマンスに関するヒント」を参照してください。
- 既存のデータベース クラスター内の仮想コアとサーバーの数のみがわかっている場合は、仮想コアまたは vCPU を使用した要求ユニットの見積もりに関するページを参照してください
- 現在のデータベース ワークロードに対する通常の要求レートがわかっている場合は、Azure Cosmos DB Capacity Planner を使用した要求ユニットの見積もりに関するページを参照してください