Azure DocumentDB 限制请求
Azure DocumentDB Throttled Requests
我在 Azure 上有一个文档数据库。当我存档用户记录及其所有数据时,我遇到了一个特别繁重的查询。
我在 S1 计划中,会收到一个异常,表明我达到了 RU/s 的限制。 S1计划有250.
我决定切换到标准套餐,您可以设置 RU/s 并支付费用。
我设置为500RU/s。
我也做了同样的查询,回去看监控图
在我做这个最新的查询测试时,它说我做了 226 个请求,其中 10 个被限制了。
这是为什么?我将它设置为 500 RU/s。顺便说一下,查询失败了。
首先,Requests != Request Units,所以你的 226 个请求会在某一时刻导致一秒内需要超过 500 个 Request Units。
DocumentDb API 会告诉您每个请求花费多少 RU,因此您可以检查该客户端以找出导致问题的请求。根据我的经验,即使是一个简单的 by-id 请求,通常也至少要花费几个 RU。
您如何看待该成本取决于您使用的客户端 SDK。在我的代码中,我添加了一些内容来自动记录所有花费超过 10 RU 的请求,以便我知道并可以采取行动。
门户中的监控工具也很不完善,我知道团队正在努力解决这个问题;您只能看到每五分钟间隔的总 RU,但您可能会尝试在一秒钟内使用 600 RU,而您在门户中看不到它。
在您的情况下,您可能有一个仅花费超过 500 RU 的大查询 - 日志记录会告诉您。在那种情况下,查看生成的 SQL 以了解原因,甚至可能 post 在这里。
或者,这可能是在短时间内触发大量小请求的累积效应 window。如果您正在执行 226 个请求以响应一个用户操作(我不知道您是否这样做),那么您可能需要重新考虑您的设计 :)
最后,您可以重试失败的请求。我不确定其他 SDK,但 .Net SDK 在放弃之前自动重试请求 9 次(这可能是对 229 个请求命中服务器的另一种解释)。
如果您选择的 SDK 没有重试,您可以轻松地自己做;服务器将 return 一个特定的状态代码(我想是 429 但不太记得了)以及重试前等待多长时间的说明。
请检查查询并更新您的问题,以便我们进一步提供帮助。
我在 Azure 上有一个文档数据库。当我存档用户记录及其所有数据时,我遇到了一个特别繁重的查询。
我在 S1 计划中,会收到一个异常,表明我达到了 RU/s 的限制。 S1计划有250.
我决定切换到标准套餐,您可以设置 RU/s 并支付费用。
我设置为500RU/s。
我也做了同样的查询,回去看监控图
在我做这个最新的查询测试时,它说我做了 226 个请求,其中 10 个被限制了。
这是为什么?我将它设置为 500 RU/s。顺便说一下,查询失败了。
首先,Requests != Request Units,所以你的 226 个请求会在某一时刻导致一秒内需要超过 500 个 Request Units。
DocumentDb API 会告诉您每个请求花费多少 RU,因此您可以检查该客户端以找出导致问题的请求。根据我的经验,即使是一个简单的 by-id 请求,通常也至少要花费几个 RU。 您如何看待该成本取决于您使用的客户端 SDK。在我的代码中,我添加了一些内容来自动记录所有花费超过 10 RU 的请求,以便我知道并可以采取行动。
门户中的监控工具也很不完善,我知道团队正在努力解决这个问题;您只能看到每五分钟间隔的总 RU,但您可能会尝试在一秒钟内使用 600 RU,而您在门户中看不到它。
在您的情况下,您可能有一个仅花费超过 500 RU 的大查询 - 日志记录会告诉您。在那种情况下,查看生成的 SQL 以了解原因,甚至可能 post 在这里。
或者,这可能是在短时间内触发大量小请求的累积效应 window。如果您正在执行 226 个请求以响应一个用户操作(我不知道您是否这样做),那么您可能需要重新考虑您的设计 :)
最后,您可以重试失败的请求。我不确定其他 SDK,但 .Net SDK 在放弃之前自动重试请求 9 次(这可能是对 229 个请求命中服务器的另一种解释)。 如果您选择的 SDK 没有重试,您可以轻松地自己做;服务器将 return 一个特定的状态代码(我想是 429 但不太记得了)以及重试前等待多长时间的说明。
请检查查询并更新您的问题,以便我们进一步提供帮助。