用基準測試框架測量Azure Cosmos DB for NoSQL效能

現在比以往任何時候都更有選擇,關於適合用於資料負載的資料庫類型。 選擇資料庫的關鍵因素之一是資料庫或服務的效能,但基準測試效能可能繁瑣且容易出錯。 Azure 資料庫的基準測試框架簡化了效能衡量流程,採用熱門開源基準工具,提供低摩擦的方案,並實施共同最佳實務。 在 Azure Cosmos DB for NoSQL 中,該框架實作了 Java SDK 的最佳實務 ,並使用開源的 YCSB 工具。 在本指南中,你會使用這個基準測試框架來實作讀取工作負載,以熟悉這個框架。

Prerequisites

建立 Azure Cosmos DB 帳戶資源

首先,你在現有的 API 裡建立一個資料庫和容器來管理 NoSQL 帳號。

  1. 在 Azure 入口網站中,前往你現有的 NoSQL API 帳戶。

  2. 在 [資源] 功能表中,選取 [資料總管]。

    在資源選單中標示的資料探索器選項的截圖。

  3. 在 資料總管 頁面,請在指令列選擇 新容器 選項。

    資料總管指令列中新容器選項的截圖。

  4. 在 新容器 對話框中,請建立一個新的容器,並設定如下:

    設定 Value
    資料庫識別碼 ycsb
    資料庫吞吐量類型 手動
    資料庫吞吐量金額 400
    容器識別碼 usertable
    分區鍵 /id

    資料總管頁面新容器對話框的截圖。

將效能測試框架部署到 Azure

現在,你使用 Azure Resource Manager 範本,將基準測試框架部署到 Azure,並使用預設讀取範本。

  1. 請使用此連結提供的 Azure 資源管理器範本來部署基準測試框架。

    部署到 Azure 按鈕。

  2. 自訂部署頁面中的以下參數

    自訂部署頁面的截圖,參數值已填寫。

  3. 選擇檢視 + 建立,然後選擇建立來部署範本。

  4. 等候部署完成。

    小提示

    整個部署可能需要5到10分鐘完成。

查看基準測試結果

現在,你可以使用現有的 Azure 儲存體 帳號來查詢基準作業的狀態並查看彙整結果。 狀態透過儲存資料表儲存,結果則以 CSV 格式彙整成儲存區塊。

  1. 在 Azure 入口網站中,進入你現有的 Azure 儲存帳號。

  2. 前往名為 ycsbbenchmarkingmetadata 的儲存表,找到具有分割鍵的 ycsb_sql實體。

    儲存帳號中 ycsbbenchmarkingMetadata 資料表的截圖。

  3. 觀察該資料表實體的JobStatus欄位。 一開始,工作狀態是 Started,且包含 JobStartTime 屬性的時間戳記,但不包含在 JobFinishTime 屬性中。

  4. 等到工作有Finished狀態,並在JobFinishTime屬性中包含時間戳。

    小提示

    完成工作大約需要20到30分鐘。

  5. 在同一帳號內,請前往以 ycsbbenchmarking-* 為前綴的儲存容器。 觀察工具的輸出和診斷數據塊。

    容器和從基準測試工具輸出的 blob 截圖。

  6. 打開 aggregation.csv 塊,觀察內容。 你現在應該會有一個包含所有基準客戶結果彙整的 CSV 資料集。

    聚合結果內容的截圖。

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

食譜

Azure 資料庫的基準測試框架包含封裝工作負載定義的配方,這些定義會傳遞給底層的基準測試工具,實現「一鍵」體驗。 工作負載定義是根據 Azure Cosmos DB 團隊及基準測試工具團隊發布的最佳實務設計的。 這些食譜經過測試並驗證,效果一致。

你可以預期在 GitHub 倉庫中看到所有讀寫配方的延遲時間。

  • 讀取延遲

    典型讀取延遲圖示,平均約1毫秒到2毫秒。

  • 寫入延遲

    典型寫入延遲平均約 4 毫秒的示意圖。

常見問題

本節包含執行基準測試工具時可能發生的常見錯誤。 該工具的錯誤日誌通常會存放在 Azure 儲存體 帳號內的容器中。

儲存帳號中容器和 blobs 的截圖。

  • 如果儲存帳號中沒有日誌,這通常是因為儲存連接字串錯誤或缺失所致。 此錯誤會顯示在客戶端虛擬機的 /home/benchmarking 資料夾中的 agent.out 檔案中。

    Error while accessing storage account, exiting from this machine in agent.out on the VM
    
  • 如果 Azure Cosmos DB 端點的 URI 錯誤或無法存取,這個錯誤會在客戶端虛擬機和儲存帳號的 agent.out 檔案中列出。

    Caused by: java.net.UnknownHostException: rtcosmosdbsss.documents.azure.com: Name or service not known 
    
  • 如果 Azure Cosmos 資料庫金鑰錯誤,這個錯誤會在 agent.out 檔案中顯示,無論是客戶端虛擬機還是儲存帳號。

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

下一步

  • 想了解基準工具的詳細資訊,請參考入門指南。