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

现在,可以选择的数据库类型比以往任何时候都要多,以满足您的数据工作负载。 选择数据库的关键因素之一是数据库或服务的性能,但基准测试性能可能比较繁琐且容易出错。 Azure 数据库的基准测试框架简化了使用常用开源基准测试工具来衡量性能的过程,这些工具采用低摩擦方案来实现常见最佳做法。 在 Azure Cosmos DB for NoSQL 中,框架实现 Java SDK 的最佳做法 ,并使用开源 YCSB 工具。 在本指南中,你将使用此基准测试框架来实现读取工作负载,以熟悉该框架。

Prerequisites

创建 Azure Cosmos DB 帐户资源

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

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

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

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

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

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

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

    设置 Value
    数据库 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 的屏幕截图。

  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 不正确或无法访问,则此错误会列在 client VM 和存储帐户中的 agent.out 文件中。

    Caused by: java.net.UnknownHostException: rtcosmosdbsss.documents.azure.com: Name or service not known 
    
  • 如果 Azure Cosmos DB 密钥不正确,则会在 client VM 和存储帐户的 agent.out 文件中列出此错误。

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

后续步骤

  • 使用 入门指南了解有关基准测试工具的详细信息。