当前位置: 首页 > 知识库问答 >
问题:

Azure Cosmos db:批量删除记录时请求超过速率限制

公冶宏深
2023-03-14

在这种情况下,为了避免像所描述的那样的服务短缺,最佳实践应该是什么?

a)我应该通过集合提供RU吗?b)我可以在发出请求时对来自代码的大容量操作消耗的RU设置一个上限吗?c)还有其他方法吗?

关于我当前(幼稚/新手)实现的更多细节:

  1. 两个集合:RawDataCollection和TransformedDataCollection
  2. 分区键值是客户帐号
  3. ru在数据库级别设置(当前开发人员部署至少有400rus)
  4. 两个集合中都需要大容量插入/删除操作
  5. 用户配置文件数据(用于登录等目的)存储在RawDataCollection中
  6. 就服务级别而言,批量操作的优先级较低,这意味着如果有更高优先级的任务进来,它可能会被搁置或其他情况。
  7. 通常当用户登录时,检索少量信息。就服务级别而言,这是高优先级。

共有1个答案

宋原
2023-03-14

建议不要对大容量删除操作使用存储过程。存储过程只对主副本进行操作,这意味着它们只能利用所提供的RU/S总量的1/4。在大容量模式下使用SDK客户机进行大容量操作将获得更好的吞吐量、使用率和更高的效率。

您是在数据库级还是容器级提供吞吐量取决于几件事。如果您有大量容器,它们得到的请求和存储量大致相同,那么数据库级的吞吐量就可以了。如果请求和存储是不对称的,那么提供那些与其他容器有很大差异的容器,并提供它们自己的专用吞吐量。了解更多有关差异的信息。

不能直接限制容器上的请求。您需要在应用程序中实现基于队列的负载均衡。

 类似资料:
  • 在我的jenkins工作中,我得到这个错误为我的bot用户。我的限制是5000,我看到每秒钟大约有100个请求,我不确定哪个工作/服务正在使用机器人的请求。理想情况下,我的其他jenkins工作应该每分钟最多占用1个请求。 有没有办法找出是什么导致了如此高的请求率?或者任何API调用来列出在最后一分钟内进行的所有API调用或类似的东西?

  • 问题内容: API通常具有用户必须遵循的速率限制。举个例子,让我们50个请求/秒。连续的请求采取0.5-1秒,因此是来接近极限速度太慢。但是,使用aiohttp的并行请求超出了速率限制。 轮询API尽可能快地允许,需要限速并行调用。 例如,我发现到目前为止装饰,大约像这样: 这非常适用于连续通话。试图并行调用来实现这个按预期不起作用。 下面是一些代码示例: 这里的问题是,它会率限制 排队 的任务。

  • 我们正在使用Google的Admin SDK API。当我们执行超过2个线程向谷歌服务器发出批量请求时,我们会遇到很多403(超过速率限制)错误。 我们在项目管理面板中更改了每秒请求的速率限制,但似乎没有效果。正如谷歌在https://developers.google.com/admin-sdk/directory/v1/limits我们已尝试使用每个线程一个用户的凭据。 我们每秒可以发送多少个

  • 我检索用户的照片使用管理sdk在java。我也实现了指数退避。 但在几次请求之后,我得到了403个错误代码和速率受限的异常消息。 有2000名用户和10至20名用户的照片。它开始给出403错误,并使用指数回退,这需要很长时间才能执行。 有人能给我一些关于这个问题的建议吗。?

  • 假设我正在创建一个PWA(渐进式网络应用程序),用户可以在其中添加产品。这些产品的价格从0.01 EUR到1.00 EUR不等。我使用条纹支付。条纹订单对象不支持动态价格,动态传递,没有任何引用(一种外键)。要接受订单,Stripe需要引用SKU。在我的例子中,这个SKU将是产品价格的变化。这意味着,为了涵盖所有变化,我需要100个SKU,从1(0.01欧元)到100(1,00欧元)。因此,对于在

  • 我正在使用ProjectReactor使用rest从web服务加载数据。这是与多个线程并行完成的。我开始达到web服务的速率限制,因此我希望每秒最多发送10个请求,以避免出现这些错误。用Reactor我该怎么做? 使用zipWith(Mono.delayMillis(100))?还是有更好的办法? 非常感谢。