Compartilhar via

防止 Azure Cosmos DB for MongoDB 操作出现速率限制错误

适用对象: Mongodb

重要

你是否正在寻找一种数据库解决方案,以应对需要高扩展性、99.999% 可用性服务级别协议(SLA)、即时自动扩展和跨多个区域的自动故障转移的场景? 请考虑使用 Azure Cosmos DB for NoSQL

如果超出集合的吞吐量限制 (RU),则 Azure Cosmos DB for MongoDB 操作可能会遇到速率限制,从而导致 Mongo 请求指标出现 16500 错误。

启用服务器端重试 (SSR) 以自动重试操作。 SSR 会在您帐户的所有集合中快速重试请求。 如果超时达到 60 秒,客户端将收到 ExceededTimeLimit 异常 (50)

使用 Azure 门户

  1. 登录到 Azure 门户

  2. 导航到 Azure Cosmos DB for MongoDB 帐户。

  3. 转到“设置”部分下面的“功能”窗格 。

  4. 选择“服务器端重试”。

  5. 单击“启用”,为您帐户中的所有集合启用此功能。

Azure Cosmos DB for MongoDB 的服务器端重试功能的屏幕截图

使用 Azure CLI

  1. 检查是否已为你的帐户启用了 SSR:

    az cosmosdb show --name accountname --resource-group resourcegroupname
    
  2. 为数据库帐户中的所有集合启用 SSR。 此更改生效可能需要长达 15 分钟的时间。

    az cosmosdb update --name accountname --resource-group resourcegroupname --capabilities EnableMongo DisableRateLimitingResponses
    
  3. 以下命令将通过从功能列表中移除DisableRateLimitingResponses,禁用数据库帐户中所有集合的服务器端重试。 此更改生效可能需要长达 15 分钟的时间。

    az cosmosdb update --name accountname --resource-group resourcegroupname --capabilities EnableMongo
    

常见问题解答

如何监视服务器端重试的效果?

可以在 Azure Cosmos DB 资源日志中搜索包含“estimatedDelayFromRateLimitingInMilliseconds”的日志条目。

服务器端重试是否会影响我的一致性级别?

服务器端重试不会影响请求的一致性。 如果请求受到速率限制,则会在服务器端重试。

服务器端重试是否影响客户端可能收到的任何类型的错误?

否,服务器端重试只会通过在服务器端重试来处理速率限制错误。 有了此功能,就不必在客户端应用程序中处理速率限制错误。 所有其他错误都会传递到客户端。

后续步骤

若要了解有关排除常见错误的更多信息,请参阅此文:

尝试为迁移到 Azure Cosmos DB 进行容量计划? 可以使用有关现有数据库群集的信息进行容量规划。