防止 Azure Cosmos DB for MongoDB 操作出现速率限制错误
适用对象: MongoDB
如果 Azure Cosmos DB for MongoDB 操作超出集合的吞吐量限制 (RU),则可能失败,出现速率限制 (16500/429) 错误。
可以启用服务器端重试 (SSR) 功能,并让服务器自动重试这些操作。 短暂延迟后,你的帐户中的所有集合的请求会重试。 此功能是处理客户端应用程序中的速率限制错误的便捷替代方法。
使用 Azure 门户
登录到 Azure 门户。
导航到 Azure Cosmos DB for MongoDB 帐户。
转到“设置”部分下面的“功能”窗格 。
选择“服务器端重试”。
单击“启用”为帐户中的所有集合启用此功能。
使用 Azure CLI
检查是否已为你的帐户启用了 SSR:
az cosmosdb show --name accountname --resource-group resourcegroupname
为数据库帐户中的所有集合启用 SSR。 此更改生效可能需要长达 15 分钟的时间。
az cosmosdb update --name accountname --resource-group resourcegroupname --capabilities EnableMongo DisableRateLimitingResponses
以下命令会通过从功能列表中删除
DisableRateLimitingResponses
,对数据库帐户中的所有集合“禁用”服务器端重试。 此更改生效可能需要长达 15 分钟的时间。az cosmosdb update --name accountname --resource-group resourcegroupname --capabilities EnableMongo
常见问题
如何重试请求?
连续(一次又一次)重试请求,直到出现 60 秒超时为止。 如果超时,则客户端会收到 ExceededTimeLimit 异常 (50)。
如何监视服务器端重试的效果?
可以在“Azure Cosmos DB 指标”窗格中查看服务器端重试的速率限制错误 (429)。 请记住,启用 SSR 后,这些错误不会传递给客户端,因为它们是在服务器端处理和重试的。
可以在 Azure Cosmos DB 资源日志中搜索包含“estimatedDelayFromRateLimitingInMilliseconds”的日志条目。
服务器端重试是否会影响我的一致性级别?
服务器端重试不会影响请求的一致性。 如果请求受到速率限制(出现 429 错误),则会在服务器端重试。
服务器端重试是否影响客户端可能收到的任何类型的错误?
否。由于是在服务器端重试,服务器端重试只会影响速率限制错误 (429)。 有了此功能,就不必在客户端应用程序中处理速率限制错误。 所有其他错误都会传递到客户端。
后续步骤
若要了解有关排除常见错误的更多信息,请参阅此文:
尝试为迁移到 Azure Cosmos DB 进行容量计划? 可以使用有关现有数据库群集的信息进行容量规划。
- 如果只知道现有数据库群集中的 vCore 和服务器数量,请阅读使用 vCore 或 vCPU 估算请求单位
- 若知道当前数据库工作负载的典型请求速率,请阅读使用 Azure Cosmos DB 容量计划工具估算请求单位