ベンチマーク フレームワークを使用して Azure Cosmos DB for NoSQL のパフォーマンスを測定する

データ ワークロードで使用するデータベースの種類には、これまで以上に多くの選択肢があります。 データベースを選択する主な要因の 1 つはデータベースまたはサービスのパフォーマンスですが、パフォーマンスのベンチマーク測定は煩雑で、誤りが発生しやすい場合があります。 Azure データベースのベンチマーク フレームワークを使用すると、一般的なベスト プラクティスを実装する低摩擦のレシピで、人気のあるオープンソース ベンチマーク ツールを利用できるため、パフォーマンスを測定するプロセスが簡素化されます。 Azure Cosmos DB for NoSQL では、このフレームワークは Java SDK のベスト プラクティスを実装し、オープンソースの YCSB ツールを使用します。 このガイドでは、このベンチマーク フレームワークを使用して読み取りワークロードを実装し、フレームワークについて理解を深めます。

前提条件

Azure Cosmos DB アカウント リソースの作成

まず、既存の NoSQL 用 API アカウントにデータベースとコンテナーを作成します。

  1. Azure portal で既存の NoSQL 用 API アカウントに移動します。

  2. リソース メニューで [Data Explorer] を選びます。

    リソース メニューで強調表示されている [データ エクスプローラー] オプションのスクリーンショット。

  3. [データ エクスプローラー] ページで、コマンド バーの [新しいコンテナー] オプションを選択します。

    データ エクスプローラー コマンド バーの [新しいコンテナー] オプションのスクリーンショット。

  4. [ 新しいコンテナー] ダイアログで、次の設定で新しいコンテナーを作成します。

    設定
    データベース ID ycsb
    データベースのスループットの種類 [手動]
    データベースのスループットの量 400
    コンテナー ID usertable
    パーティション キー /id

    [データ エクスプローラー] ページの [新しいコンテナー] ダイアログのスクリーンショット。

ベンチマーク フレームワークを Azure にデプロイする

ここで、Azure Resource Manager テンプレートを使用し、既定の読み取りレシピを使用してベンチマーク フレームワークを Azure にデプロイします。

  1. このリンクから利用できる Azure Resource Manager テンプレートを使用して、ベンチマーク フレームワークをデプロイします。

    [Azure へのデプロイ] ボタン。

  2. [カスタム デプロイ] ページで、以下のパラメーターを設定します

    パラメーター値が入力された [カスタム デプロイ] ページのスクリーンショット。

  3. [確認と作成][作成] の順に選択して、このテンプレートをデプロイします。

  4. デプロイが完了するまで待ちます。

    ヒント

    このデプロイが完了するまで 5 から 10 分かかる場合があります。

ベンチマークの結果を表示する

これで、既存の Azure Storage アカウントを使用してベンチマーク ジョブの状態を確認し、集計された結果を表示できます。 状態はストレージ テーブルに格納され、結果は CSV 形式でストレージ BLOB に集計されます。

  1. Azure portal で既存の Azure Storage アカウントに移動します。

  2. ycsbbenchmarkingmetadata という名前のストレージ テーブルに移動し、パーティション キーが ycsb_sql のエンティティを見つけます。

    ストレージ アカウントの ycsbbenchmarkingMetadata テーブルのスクリーンショット。

  3. テーブル エンティティの JobStatus フィールドを確認します。 最初は、ジョブの状態は Started であり、JobStartTime プロパティにタイムスタンプが含まれますが、JobFinishTime プロパティには含まれません。

  4. ジョブの状態が Finished になり、JobFinishTime プロパティにタイムスタンプが含まれるようになるまで待ちます。

    ヒント

    ジョブが完了するまで約 20 から 30 分かかる場合があります。

  5. ycsbbenchmarking-* というプレフィックスを持つ同じアカウント内のストレージ コンテナーに移動します。 ツールの出力と診断 BLOB を確認します。

    コンテナーとベンチマーク ツールからの出力 BLOB のスクリーンショット。

  6. aggregation.csv BLOB を開き、内容を確認します。 これで、すべてのベンチマーク クライアントからの集計結果を含む CSV データセットが作成されたはずです。

    集計結果 BLOB の内容のスクリーンショット。

    Operation,Count,Throughput,Min(microsecond),Max(microsecond),Avg(microsecond),P9S(microsecond),P99(microsecond)
    READ,180000,299,706,448255,1079,1159,2867
    

レシピ

Azure データベースのベンチマーク フレームワークには、"1 クリック" エクスペリエンスのための基になるベンチマーク ツールに渡されるワークロード定義をカプセル化したレシピが含まれています。 このワークロード定義は、Azure Cosmos DB チームとベンチマーク ツール チームによって公開されたベスト プラクティスに基づいて設計されました。 このレシピは、一貫した結果を得るためのテストと検証を実行済みです。

GitHub リポジトリのすべての読み取りと書き込みのレシピについて、次のような待機時間が予想されます。

  • 読み取り待機時間

    平均約 1 ミリ秒から 2 ミリ秒の一般的な読み取り待機時間の図。

  • 書き込み待機時間

    平均約 4 ミリ秒の一般的な書き込み待機時間の図。

一般的な問題

このセクションでは、ベンチマーク ツールの実行時に発生する可能性がある一般的なエラーについて説明します。 このツールのエラー ログは、通常、Azure Storage アカウント内のコンテナーから入手できます。

ストレージ アカウント内のコンテナーと BLOB のスクリーンショット。

  • ログをストレージ アカウントから入手できない場合は、通常、ストレージの接続文字列が正しくないか見つからないことが原因で問題が発生しています。 この場合、このエラーは、クライアント仮想マシンの /home/benchmarking フォルダー内の agent.out ファイルに一覧表示されます。

    Error while accessing storage account, exiting from this machine in agent.out on the VM
    
  • このエラーは、Azure Cosmos DB のエンドポイント URI が正しくないか到達できない場合に、クライアント VM とストレージ アカウントの両方の agent.out ファイルに一覧表示されます。

    Caused by: java.net.UnknownHostException: rtcosmosdbsss.documents.azure.com: Name or service not known 
    
  • このエラーは、Azure Cosmos DB のキーが正しくない場合に、クライアント VM とストレージ アカウントの両方の agent.out ファイルに一覧表示されます。

    The input authorization token can't serve the request. The wrong key is being used….
    

次の手順

  • ベンチマーク ツールの詳細については、概要ガイドをご覧ください。