我正在使用适用于Java的AWS开发工具包(Node.js)从DynamoDB表读取数据。自动缩放功能在大部分时间里都表现出色,并且一天中大部分时间消耗的读取容量单位(RCU)确实很低。但是,有一个编程的作业在午夜左右执行,消耗的内存约为预配置RCU的10倍,并且由于自动缩放需要花费一些时间来调整容量,因此有许多限制的读取请求。此外,我怀疑我的请求没有完成(尽管我在错误日志中找不到任何异常)。
为了处理这种情况,我曾考虑过使用AWS
API(updateTable)增加预配置的RCU,但计算应用程序所需的RCU数量可能并不简单。
因此,我的第二个猜测是重试失败的请求,然后只是等待自动扩展增加已配置的RCU。正如AWS文档和一些堆栈溢出答案所指出的(尤其是关于
ProvisionedThroughputExceededException ):
适用于Amazon DynamoDB的AWS开发工具包会自动重试收到此异常的请求。因此,您的请求最终将成功,除非请求太大或重试队列太大而无法完成。
但是我还是很困惑:如果请求太大或重试队列太大而无法完成(因此在自动重试之后),会引发此异常吗?实际在重试之前?
最重要的是: 这是我在上下文中应该期待的例外吗?(所以我可以捕获它并重试,直到自动缩放增加RCU为止?)
是。
每次您的应用程序发送的请求超出您的能力时,您都会从Dynamo中获得ProvisionedThroughputExceededException消息。但是,您的SDK会为您处理此问题,然后重试。Dynamo的默认重试时间开始于50ms,默认重试次数为10,默认情况下,补偿是指数级的。
这意味着您可以在以下位置重试:
如果在第10次重试后您的请求仍然没有成功,则SDK会将ProvisionedThroughputExceededException传递回您的应用程序,您可以按照自己的意愿进行处理。
您可以通过增加吞吐量来处理它,但是另一种选择是在创建Dynamo连接时更改默认重试时间。例如
new AWS.DynamoDB({maxRetries: 13, retryDelayOptions: {base: 200}});
这意味着您重试13次,初始延迟为200ms。这将使您的请求总共完成819.2s,而不是25.6s。
我为帖子的篇幅感到抱歉,但有很多事情可能会导致我的情况,我已经尝试将我根据其他帖子所做的所有设置更改包括在内。简言之,我的WCF服务似乎一次只能处理3到4个并发客户端请求。如果我将应用程序池最大工作进程数设置得更高(大约10个),或者将服务行为ConcurrencyMode设置为多个,那么吞吐量就会大大提高(快几倍)。然而,这些似乎是真正问题的解决办法,带来了他们自己的问题。是我错了,还是IIS应
来自AWS Lambda常见问题解答: Q: 我一次可以执行的AWS Lambda函数的数量是否有限制? 不需要。AWS Lambda旨在并行运行多个函数实例。然而,AWS Lambda的默认安全限制为每个区域每个帐户100次并发执行。如果您希望提交请求以增加100次并发执行的限制,您可以访问我们的支持中心,单击“打开新案例”,然后提交服务限制增加请求。 Q: 如果我的帐户超过并发执行的默认限制,
在大数据存储中,IOPS和吞吐量之间的关键区别是什么
我对193个示例运行了一个JMeter测试,平均响应时间为5915ms,Throghput为1.19832。 我只想知道它们到底有什么关系
吞吐量值ex。400RU/s适用于每个分区,而不是集合?
我正在开发一个具有以下特性的实时应用程序: 数百个客户端将同时插入行/文档,每个客户端每隔几秒钟插入一行。 大部分仅追加;几乎所有的行/文档,一旦插入,永远不会改变。 只有当数据被刷新到磁盘时,客户端才会看到成功,此后读写一致性应该保持不变。 客户端愿意等待几秒钟的确认时间足够多的磁盘查找和写入发生。 RAM中的数据太多(排除像Redis这样的选项)。但是写很久以前的行很少被访问,所以在内存中没有