首页 > 解决方案 > Cosmos DB - 为什么请求没有受到限制?

问题描述

我在 Azure 订阅中创建了一个“免费”Cosmos DB 帐户 (SQL API)。在该帐户中,我创建了一个具有共享吞吐量(400 RU/s)的数据库,并且该数据库有一个容器,该容器将利用数据库的吞吐量(数据库中只有一个容器)。

我现在正在尝试使用批处理在我的容器中插入一些项目。每个批次正好包含 100 个项目(每个项目小于 1K),我正在尝试创建 5000 个实体(即 50 个批次)。每个批次插入都在持续消耗780.95 RUs

考虑到配置的吞吐量只有 400 RU/s,我预计我的一些请求会受到限制,但令我惊讶的是,我的所有请求都成功了。我还监控了所花费的总时间(端到端和服务器花费的时间),它们分别约为 30 秒和 3 秒。消耗的总吞吐量为 39047.50。

在此处输入图像描述

我还检查了监控以确保服务没有限制任何请求(以防 SDK 正在重试受限制的请求),但也没有发现任何受限制的请求。

在此处输入图像描述

这是第 10 个请求的日志(其余请求或多或少相同):

Overall time taken (end-to-end): 30605 ms
Overall time taken (request): 2733.6059999999993 ms
Overall RUs consumed: 39047.49999999999
===========================================
Batch #    Status Code    Request Charge Time (E2E) (ms)    Time (Request) (ms)
001        OK             780.95         7018               56.262
002        OK             780.95         531                53.618
003        OK             780.95         474                51.65
004        OK             780.95         504                54.668
005        OK             780.95         488                56.367
006        OK             780.95         487                50.501
007        OK             780.95         513                54.459
008        OK             780.95         486                55.089
009        OK             780.95         483                65.06

我很想知道为什么我的请求没有受到限制?

我读过RU debt这里这里)但是数学并没有加起来。如果我认为总时间段为 30 秒,那么我可用的 RU 为 12000(400 RU/sx 30 秒),如果我认为总时间段为 3 秒,那么我可用的 RU 为 1200(400 RU/sx 3 秒)。这两个数字都比我的应用程序消耗的 39000 RU 少得多,我的请求应该受到限制,但没有一个请求受到限制。

对此的任何见解都将受到高度赞赏。

标签: azureazure-cosmosdbazure-cosmosdb-sqlapi

解决方案


这不是免费套餐的工作方式。它只是免费使用前 400 RU/s。

这是相当普遍的误解。我们正在开发吞吐量上限功能,该功能将限制免费层级和其他帐户。现在你需要监控。


推荐阅读