程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了当超出预配置的吞吐量时,该怎么办?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决当超出预配置的吞吐量时,该怎么办??

开发过程中遇到当超出预配置的吞吐量时,该怎么办?的问题如何解决?下面主要结合日常开发的经验,给出你关于当超出预配置的吞吐量时,该怎么办?的解决方法建议,希望对你解决当超出预配置的吞吐量时,该怎么办?有所启发或帮助;

是。

每次您的应用程序发送的请求超出您的能力时,您都会从Dynamo中获得ProvisionedThroughputExceededException消息。但是,您的SDK会为您处理此问题,然后重试。Dynamo的默认重试时间开始于50ms,默认重试次数为10,默认情况下,补偿是指数级的。

这意味着您可以在以下位置重试:

  • 50毫秒
  • 100毫秒
  • 200毫秒
  • 400毫秒
  • 800毫秒
  • 1.6秒
  • 3.2秒
  • 6.4秒
  • 12.8秒
  • 25.6秒

如果在第10次重试后您的请求仍然没有成功,则SDK会将ProvisionedThroughputExceededException传递回您的应用程序,您可以按照自己的意愿进行处理。

您可以通过增加吞吐量来处理它,但是另一种选择是在创建Dynamo连接时更改默认重试时间。例如

new AWs.DynamoDB({maxRetrIEs: 13, retryDelayOptions: {Base: 200}});

这意味着您重试13次,初始延迟为200ms。这将使您的请求总共完成819.2s,而不是25.6s。

解决方法

我正在使用适用于Java的AWS开发工具包(Node.js)从DynamoDB表读取数据。自动缩放功能在大部分时间里都表现出色,并且一天中大部分时间消耗的读取容量单位(RCU)确实很低。但是,有一个编程的作业在午夜左右执行,消耗的内存约为预配置RCU的10倍,并且由于自动缩放需要花费一些时间来调整容量,因此有许多限制的读取请求。此外,我怀疑我的请求没有完成(尽管我在错误日志中找不到任何异常)。

为了处理这种情况,我曾虑过使用AWS
API(updateTable)增加预配置的RCU,但计算应用程序所需的RCU数量可能并不简单。

因此,我的第二个猜测是重试失败的请求,然后只是等待自动扩展增加已配置的RCU。正如AWS文档和一些堆栈溢出答案所指出的(尤其是关于
ProvisionedThroughputExceededException ):

但是我还是很困惑:如果请求太大或重试队列太大而无法完成(因此在自动重试之后),会引发此异常吗?实际在重试之前?

最重要的是: 这是我在上下文中应该期待的例外吗?(@R_859_9447@捕获它并重试,直到自动缩放增加RCU为止?)

大佬总结

以上是大佬教程为你收集整理的当超出预配置的吞吐量时,该怎么办?全部内容,希望文章能够帮你解决当超出预配置的吞吐量时,该怎么办?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。