大佬教程收集整理的这篇文章主要介绍了当超出预配置的吞吐量时,该怎么办?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
是。
每次您的应用程序发送的请求超出您的能力时,您都会从Dynamo中获得ProvisionedThroughputExceededException消息。但是,您的SDK会为您处理此问题,然后重试。Dynamo的默认重试时间开始于50ms,默认重试次数为10,默认情况下,补偿是指数级的。
这意味着您可以在以下位置重试:
如果在第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,请注明来意。