- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用适用于 Javascript (Node.js) 的 AWS 开发工具包从 DynamoDB 表中读取数据。自动缩放功能在大部分时间都表现出色,一天中大部分时间消耗的读取容量单位 (RCU) 非常低。然而,有一个在午夜左右执行的编程作业消耗了大约 10 倍的预配置 RCU,并且由于自动缩放需要一些时间来调整容量,因此有很多受限的读取请求。此外,我怀疑我的请求没有完成(尽管我在错误日志中找不到任何异常)。
为了处理这种情况,我考虑过使用 AWS API (updateTable) 增加配置的 RCU,但计算我的应用程序所需的 RCU 数量可能并不简单。
所以我的第二个猜测是重试失败的请求,然后等待自动缩放增加预配的 RCU。正如 AWS 文档和一些 Stack Overflow 答案所指出的(特别是关于 ProvisionedThroughputExceededException):
The AWS SDKs for Amazon DynamoDB automatically retry requests that receive this exception. So, your request is eventually successful, unless the request is too large or your retry queue is too large to finish.
我读过类似的问题(this one、this one 和 this one),但我仍然感到困惑:如果请求太大或重试队列太大而无法完成,是否会引发此异常(因此在自动重试之后)还是实际上在重试之前?
最重要的是:在我的上下文中,这是我应该期待的异常吗? (所以我可以捕获它并重试直到自动缩放增加 RCU?)
最佳答案
是的。
每次您的应用程序发送超出容量的请求时,您都会从 Dynamo 收到 ProvisionedThroughputExceededException 消息。但是,您的 SDK 会为您处理并重试。默认 Dynamo 重试时间从 50 毫秒开始,默认重试次数为 10 次,退避默认为指数。
这意味着您可以在以下位置重试:
如果在第 10 次重试后您的请求仍未成功,SDK 会将 ProvisionedThroughputExceededException 传递回您的应用程序,您可以随意处理它。
您可以通过增加吞吐量来处理它,但另一种选择是在创建 Dynamo 连接时更改默认重试次数。例如
new AWS.DynamoDB({maxRetries: 13, retryDelayOptions: {base: 200}});
这意味着您重试 13 次,初始延迟为 200 毫秒。这将使您的请求总共需要 819.2 秒才能完成,而不是 25.6 秒。
关于node.js - 超过预配吞吐量怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48022398/
有没有一种方法我可以编写一个“工具”来分析从 C/C++ 程序生成的 x86 汇编语言并以这种方式测量性能,无论我在 1GHz 还是 3GHz 上运行它都没有关系处理器? 我在考虑更多的指令吞吐量?我
我们正在使用 NATS 并使用 3+ 节点的集群。我们有几个生产者和许多消费者。消息大小很小 (~100bytes) 但是我们的吞吐量有点高。 ~40k/秒。所有流量都在 2x10gbps 绑定(bi
我需要一些帮助才能使用 JMeter。我想记录两种不同的场景,比如点击 2 个不同的按钮。如果我尝试为 2 个用户运行,一个用户应该点击第一个按钮,另一个用户应该同时点击另一个按钮。 我知道这是基本问
在 100Gb 网络上,我创建了一个服务器来监听 4 个端口,grpc 客户端可以达到 3GB+/s 的吞吐量。然而,当服务器监听一个端口时,grpc 客户端达到了 1GB/s 的吞吐量,即使我设置了
android Handlers可行的数据IO吞吐量是多少?足以在线程之间传递原始音频或视频吗?它应该是可持续的吗? 我在 android Handler docs 中没有看到任何对此的引用, $WE
我正在使用 logstash 和 elasticsearch 构建日志系统。 RabbitMQ 用于在两个 logstash 之间排队日志消息。 消息路径如下: source log -> logst
我正在研究 .NET Core 在 Linux 机器上的性能。具体来说,确定框架本身可用的工具可能存在什么样的限制。 我一直以 ~ 50,000 pps 的价格击中盒子。到目前为止,似乎 ~ 20,0
我有一个使用 nfs 挂载的 gentoo 无盘客户端,看起来 nfs 的吞吐量很慢。 iperf 显示网络能够推送 770 Mb/s,hdparm 显示服务器上的 SATA 磁盘速度为 90 Mb/
我正在使用 Java Preferences API 来存储 Swing 应用程序的窗口位置和大小。此时此刻,我正在监听窗口调整大小/重新定位事件并在每次更改时存储位置和大小。然而,这意味着如果用户慢
我正在尝试弄清楚 DataFlow 如何扩展某些操作以及如何使其表现最佳。首先,我刚刚创建了一个简单的流程,它从 BigQuery 中读取数据(约 2500 万行,总共 30GB),进行 JSON 提
确定 Oracle Java 8 JVM 垃圾收集器吞吐量的最简单方法是什么,最好使用 JDK 命令行工具? 通过 jstat 命令,我可以获得总的垃圾收集时间(GCT 列)。根据这个值的变化与GC日
我有一个 Java 程序,它使用 HDFS 数据输入/输出流读取文件并将内容写入新文件。我的目标是找出我的 HDFS 的 I/O 吞吐量。下面是执行读/写和计时的代码片段: long start =
我了解延迟 - 消息从发件人到收件人所需的时间 - 和带宽 - 在给定时间内可以传输的最大数据量 - 但我正在努力寻找合适的术语来描述相关事物: 如果协议(protocol)是基于对话的——负载在端点
我有一个在 pesto、mod_wsgi 和 Apache 上运行的普通 WSGI 应用程序: def viewData(request): return Response("aaaaaaaa
我们计划将 10000 个 JSON 文档写入 Azure Cosmos DB (MongoDB),吞吐量单位重要吗?如果重要,我们可以增加批量负载并将其设置回较低的数字 最佳答案 是的,你可以做到。
我们计划将 10000 个 JSON 文档写入 Azure Cosmos DB (MongoDB),吞吐量单位重要吗?如果重要,我们可以增加批量负载并将其设置回较低的数字 最佳答案 是的,你可以做到。
在我的 spark 应用程序中,我正在阅读 kafka 主题。该主题有 10 个分区,因此我创建了 10 个接收器,每个接收器一个线程。通过这样的配置,我可以观察到接收器的奇怪行为。这些消费者的平均利
关于 AWS DynamoDb 吞吐量,我有些无法理解的地方。 让我们考虑强一致性读取。 现在,我明白在这种情况下,1 个容量单位意味着我每秒最多可以读取 4KB 的数据。 “每秒”这一点让我有点困惑
来自 AWS Lambda 常见问题解答: Q: Is there a limit to the number of AWS Lambda functions I can execute at onc
在内核版本 4.X 上运行 iperf tcp_ul 流量时,我观察到 tcp_ul 的吞吐量有所下降。任何人都知道,为什么会这样。 最佳答案 在内核版本 4.4 之后,他们修改了 TCP 拥塞控制算
我是一名优秀的程序员,十分优秀!