Azure DocumentDB受限制的请求

用户名

我在Azure上有一个文档数据库数据库。我存档用户记录及其所有数据时会遇到一个特别繁重的查询。

我正在执行S1计划,并且会遇到一个异常,表明我已达到RU / s的极限。S1计划有250个。

我决定切换到“标准”计划,该计划可让您设置RU / s并为此付费。

我将其设置为500 RU / s。

我进行了相同的查询,然后回过头来查看监视图表。

在我进行此最新的查询测试时,它说我做了226个请求,其中有10个受到限制。

这是为什么?我将其设置为500 RU / s。顺便说一下,查询失败了。

法语

首先,Requests!= Request Units,因此您的226个请求将在某一时刻导致在一秒钟内需要500个以上的请求单元。

DocumentDb API会告诉您每个请求要花费多少RU,因此您可以检查该客户端以找出哪个请求导致了问题。根据我的经验,即使是简单的id请求,也通常至少要花费几个RU。您如何看待成本取决于您使用哪个客户端SDK。在我的代码中,我添加了一些内容来自动记录所有花费超过10 RU的请求,以使我知道并可以采取措施。

同样,门户中的监视工具还很不足,我知道团队正在为此进行工作。您只能每隔5分钟查看一次RU总数,但是您可能尝试在一秒钟内使用600 RU,而您在门户网站上看不到它。

在您的情况下,您可能只用一个大型查询,而该查询的成本就超过500 RU-日志记录会告诉您。在这种情况下,请查看生成的SQL以了解原因,甚至可以将其发布在此处。

或者,这可能是在较小的时间范围内触发大量小请求的累积效果。如果您要响应一个用户操作执行226个请求(并且我不知道您是否这样做),那么您可能想重新考虑您的设计:)

最后,您可以重试失败的请求。我不确定其他SDK,但是.Net SDK在放弃之前会自动重试9次请求(这可能是229个请求到达服务器的另一种解释)。如果您选择的SDK不重试,则您可以轻松地自己完成;服务器将返回一个特定的状态代码(我认为是429,但不太记得)以及有关重试之前要等待多长时间的指令。

请检查查询并更新您的问题,以便我们提供进一步的帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章