使用基准测试框架衡量 Azure Cosmos DB for NoSQL 性能

与数据工作负载结合使用的数据库类型现在有比以往更多的选择。 选择数据库的关键因素之一是数据库或服务的性能,但基准测试性能可能很繁琐且容易出错。 适用于 Azure 数据库的基准测试框架 使用热门的开源基准测试工具简化了衡量性能的过程,这些工具具有实现常见最佳做法的低摩擦方案。 在 Azure Cosmos DB for NoSQL 中,该框架实现了 Java SDK 的最佳做法,并使用开源 YCSB 工具。 在本指南中,你会使用此基准测试框架以实现读取工作负载,从而熟悉该框架。

先决条件

创建 Azure Cosmos DB 帐户资源

首先,在现有的 API for NoSQL 帐户中创建数据库和容器。

  1. Azure 门户中导航到现有的 API for NoSQL 帐户。

  2. 在资源菜单中,选择“数据资源管理器”。

    突出显示了资源菜单中“数据资源管理器”选项的屏幕截图。

  3. 在“数据资源管理器”页上,选择命令栏中的“新建容器”选项。

    数据资源管理器命令栏中“新建容器”选项的屏幕截图。

  4. 在“新建容器”对话框中,使用以下设置创建新容器:

    设置
    数据库 ID ycsb
    数据库吞吐量类型 手动
    数据库吞吐量 400
    容器 ID usertable
    分区键 /id

    数据资源管理器页面“新容器”对话框的屏幕截图。

将基准测试框架部署到 Azure

现在,使用 Azure 资源管理器模板 通过默认的读取方案将基准测试框架部署到 Azure。

  1. 使用此链接中提供的 Azure 资源管理器模板部署基准测试框架。

    “部署到 Azure”按钮。

  2. 在“自定义部署”页面,以下参数

    “自定义部署”页面的屏幕截图,其中已填写参数值。

  3. 依次选择“查看 + 创建”、“创建”以部署模版。

  4. 等待部署完成。

    提示

    部署可能需要 5-10 分钟才能完成。

查看基准测试的结果

现在,可以使用现有的 Azure 存储帐户以检查基准作业的状态并查看聚合结果。 状态使用存储表进行存储,结果使用 CSV 格式聚合到存储 blob 中。

  1. Azure 门户 中导航到现有的 Azure 存储帐户。

  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 数据库的基准测试框架 包括封装工作负载定义的方案,这些定义传递给基础基准测试工具以实现“一键式”体验。 工作负载定义根据 Azure Cosmos DB 团队和基准测试工具团队发布的最佳做法设计。 已测试并验证方案,以保持结果一致。

GitHub 存储库 中所有读取和写入方案的以下延迟都会出现。

  • 读取延迟

    典型读取延迟(平均约为 1 毫秒到 2 毫秒)的关系图。

  • 写入延迟

    典型写入延迟(平均约为 4 毫秒)的关系图。

常见问题

本节包括运行基准测试工具时可能发生的常见错误。 该工具的错误日志通常位于 Azure 存储帐户的容器中。

存储帐户中容器和 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.cn: 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….
    

后续步骤