防止 Azure Cosmos DB for MongoDB 操作出现速率限制错误
适用对象: MongoDB
如果超出集合的吞吐量限制 (RU),则 Azure Cosmos DB for MongoDB 操作可能会遇到速率限制,从而导致 Mongo 请求指标出现 16500 错误。
启用服务器端重试 (SSR) 以自动重试操作。 SSR 会在帐户中的所有集合中以较短的延迟重试请求。 如果超时达到 60 秒,客户端将收到 ExceededTimeLimit 异常 (50)。
使用 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
常见问题解答
如何监视服务器端重试的效果?
可以在 Azure Cosmos DB 资源日志中搜索包含“estimatedDelayFromRateLimitingInMilliseconds”的日志条目。
服务器端重试是否会影响我的一致性级别?
服务器端重试不会影响请求的一致性。 如果请求受到速率限制,则会在服务器端重试。
服务器端重试是否影响客户端可能收到的任何类型的错误?
否。服务器端重试仅通过在服务器端重试来影响速率限制错误。 有了此功能,就不必在客户端应用程序中处理速率限制错误。 所有其他错误都会传递到客户端。
后续步骤
若要了解有关排除常见错误的更多信息,请参阅此文:
尝试为迁移到 Azure Cosmos DB 进行容量计划? 可以使用有关现有数据库群集的信息进行容量规划。
- 要了解如何跨分区重新分配吞吐量,请参阅了解如何跨分区重新分配吞吐量
- 如果只知道现有数据库群集中的 vCore 和服务器数量,请阅读使用 vCore 或 vCPU 估算请求单位
- 若知道当前数据库工作负载的典型请求速率,请阅读使用 Azure Cosmos DB 容量计划工具估算请求单位