0

概述

我有一个用户注册/入职流程,我目前正在尝试优化和更好地理解,然后再扩展到更大的负载测试。

测试集合:(500 RU)
PartitionKey: tenant_email
多主: 5 个区域

以下是只有一个区域的数据库的单个区域统计信息。

  • 第 1 步- 注册新用户 (10.17 RU)
  • 第 2 步- 更新一些数据 (3.4 RU)
  • 第 3 步- 创建订阅 (13.23 RU)
  • 第 4 步- 更新一些数据 (3.43 RU)
  • 第 4 步- 更新一些数据 (3.43 RU)
  • 第 5 步- 更新一些数据 (3.83 RU)
  • 第 6 步- 刷新访问令牌 (3.13RU)
  • 总计:每个板载约 40.5 RU

问题

预期吞吐量:约 12 个注册(84req/秒)
实际吞吐量:重度速率限制为每秒约 3 个注册(21req/秒)。在〜40RU这似乎我只得到500的120RU利用率?

在此处输入图像描述

在此处输入图像描述

下面的存储分布和 partitionKey 应该足够独特,以便在集合上均匀分布负载以最大化吞吐量?不知道为什么 Max Consumed RU/s 这么高。

在此处输入图像描述

集合和所选 partitionKey 的存储分布看起来是均匀分布的。

在此处输入图像描述

更新 - 利用率不足

这是一个屏幕截图,显示了具有单个 500 RU 分区的集合。您可以从中清楚地看到,每个分区的最大消耗 RU 一直在大约 350 左右,但注意到严重的速率限制,即使我们从未达到 500 RU/s。

在此处输入图像描述

4

1 回答 1

0

您的速率限制可能是因为您无法访问单个物理分区中的所有 500 RU。

仔细看看你的第二张图,它暗示了可能发生的事情:

Collection UsersTest 有 5 个分区键范围。预置吞吐量均匀分布在这些分区中(每个分区 100 RU/s)。

在幕后,Cosmos DB 创建了一组物理分区,并且您的 RU 被划分到这些物理分区中。在您的情况下,Cosmos DB 创建了 5 个物理分区。

逻辑分区可以映射到您的 5 个物理分区中的任何一个。因此,在您的测试期间,可能有多个逻辑分区映射到同一个物理分区。鉴于每个物理分区的最高注册量约为每秒 2-3 次,这很可能解释了您看到限制的原因。

于 2018-12-25T15:52:40.187 回答