当超出设定的吞吐量时应该做什么?

2024-06-25

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

为了处理这种情况,我考虑使用 AWS API 增加预配置的 RCU(更新表 http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#updateTable-property)但计算我的应用程序所需的 RCU 数量可能并不简单。

因此,我的第二个猜测是重试失败的请求,然后等待自动扩展增加预配置的 RCU。正如 AWS 文档和一些 Stack Overflow 答案所指出的(特别是关于配置吞吐量超出异常):

适用于 Amazon DynamoDB 的 AWS 开发工具包会自动重试收到此异常的请求。因此,您的请求最终会成功,除非请求太大或者您的重试队列太大而无法完成。

我读过类似的问题(this one https://stackoverflow.com/questions/45193240/dynamodb-when-does-provisionedthroughputexceededexception-raise, this one https://stackoverflow.com/questions/13756952/repeating-throttled-dynamodb-requests/13780368#13780368 and this one https://stackoverflow.com/questions/42182219/dynamodb-provisioned-capacity-throttling-vs-failure/42183632#42183632)但我仍然很困惑:如果请求太大或重试队列太大而无法完成(因此在自动重试之后)或实际上在重试之前,是否会引发此异常?

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


Yes.

每次您的应用程序发送超出您容量的请求时,您都会从 Dynamo 收到 ProvisionedThroughputExceededException 消息。但是,您的 SDK 会为您处理此问题并重试。默认 Dynamo 重试时间从 50ms 开始,默认重试次数为 10,默认退避为指数。

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

  • 50ms
  • 100ms
  • 200ms
  • 400ms
  • 800ms
  • 1.6s
  • 3.2s
  • 6.4s
  • 12.8s
  • 25.6s

如果第 10 次重试后您的请求仍未成功,SDK 会将 ProvisionedThroughputExceededException 传递回您的应用程序,您可以按照自己的方式处理它。

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

new AWS.DynamoDB({maxRetries: 13, retryDelayOptions: {base: 200}});

这意味着您重试 13 次,初始延迟为 200 毫秒。这将使您的请求总共需要 819.2 秒才能完成,而不是 25.6 秒。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当超出设定的吞吐量时应该做什么? 的相关文章

随机推荐

  • 在 Azure 中的何处添加监控读取器角色

    我想在 azure 门户中设置一些警报 现在对 监控读者 和 监控贡献者 角色有点困惑 假设我有 2 个 Web 应用程序 属于 1 个资源组 并且它们都将日志写入 1 个应用程序洞察实例 现在我想向应用程序见解添加一条新规则 即当错误太多
  • 核心动画的鱼眼效果?

    我正在尝试实现类似于 ABC News iPad 应用程序的地球仪的效果 是不是可以通过改造CALayers来得到这个效果呢 或者这是使用 OpenGL 和片段 顶点着色器 CALayer 提供对变换矩阵的访问 是否有一些数学可以应用于此而
  • 运行 webpack 抛出“回调已被调用”错误

    我刚刚开始学习 webpack 来管理项目中的依赖项 我正在尝试使用它为我的打字稿和 JavaScript 文件构建捆绑包 对于打字稿文件 我正在使用ts loader处理它的插件 对于CSS 我使用的是mini css extract a
  • 通过 Phonegap 使用 SSL 和证书连接到 Web 服务器

    这就是关于基于 JS 构建的 Phonegap Android 和 iOS 应用程序的全部内容 我们有一个服务器 方法如下 授权 登录 通过 返回certificate p12文件 PKCS 12 服务器也有方法 需要使用该证书进行授权 R
  • dplyr 中 select() 的 contains() 和 matches() 之间的区别

    我决定花一些时间彻底学习dplyr 我刚刚遇到select 函数以及它附带的一些辅助函数 通过只是玩弄 我没能发现两者之间的任何区别contains and matches辅助功能 有人可以提供一个例子来说明如何将它们用于不同的目的吗 谢谢
  • 在 Python 3 中调用 super() 的 4 种方法中,使用哪一种?

    我想知道什么时候使用 Python 3 的什么风格super http docs python org py3k library functions html super Help on class super in module buil
  • 将 XSL 嵌入 XML 以在 Web 浏览器中显示:我做错了什么?

    所以我试图研究这个 但我几乎束手无策 我找到了一种将 XSL 嵌入 XML 的方法dpawson co uk http www dpawson co uk xsl sect2 onefile html 但我不知道我做错了什么 我在互联网上搜
  • 如何将 image_tag 与 bootstrap class: "img-responsive" 一起使用?第11章

    我问这个问题的原因是为了解决一个非常烦人的语法错误 我正在使用第 11 章 这样我就可以在我的新网站上使用图像构建一个博客部分 除了我尝试向此行添加 class img responsive 之外 一切都正常 我只是无法弄清楚添加类的正确语
  • Session.getActiveUser.getEmail() 空白?谷歌表格

    我想检查点击该特定按钮的用户 当我以我的帐户登录时单击它时 它运行正常 但如果其他人运行它 它就是空白的 如何获取登录用户的电子邮件 ID 这是我的代码 function check User var ui SpreadsheetApp g
  • Hotmail 混淆了编码的 URL 参数

    我们有一个系统 可以定期发送带有链接的电子邮件 其中许多包含 URL 编码参数 如下所示 href http www mydomain com login aspx returnurl http 3A 2F 2Fwww mydomain c
  • [R][传单]:点击超链接

    我想在世界地图上添加标记 当用户单击一个标记时 它会将用户引导到另一个网站 而不是弹出窗口 我是这个库的新手 实际上这是我为了解决这个问题而尝试的第一个库 带有超链接标记的交互式地图 供用户单击并转到另一个网站 所以我能做的就是 map l
  • 查找 numpy 数组中包含最大值的行或列

    如何在 2d numpy 数组中找到包含数组范围最大值的行或列 您可以使用np argmax随着np unravel index as in x np random random 5 5 print np unravel index np
  • 用户 10036 和当前进程都没有 android.permission.DEVICE_POWER。

    我需要通过应用程序上的按钮关闭设备电源 我向清单文件添加权限
  • Jquery 单选按钮检查

    我想检查是否选择了任何单选按钮 以及是否没有选择打印一些警报消息 html代码是
  • F# 中的底部/未定义值?

    有一个方便的不明确的 http www haskell org haskellwiki BottomHaskell 中的值可以用作代码中尚未定义的函数 路径的存根 F 中有类似的东西吗 具体来说 您可以这样定义这样的值 let undefi
  • 如何根据 node.js 中用户的输入创建 mongodb 查询?

    目前在我的应用程序中我存储了不同的论坛帖子 用户可以添加新消息并创建新帖子 其他用户在显示内容时可以对其进行过滤 这样他们就不会看到他们之前阻止的特定用户上传的内容 每个用户都表示为以下组合device id and display nam
  • (因子)数据框列的小写字母

    我有一个data frame以这种格式 data frame 244 obs of 1 variable names Factor w 244 levels ERA BAKE 1 2 3 4 5 6 7 8 9 10 我用它来将其转换为小写
  • 转义 re.sub 的 repl 参数

    我想确定repl的论证re sub是转义 因此任何特殊序列如 1不被解释 gt gt gt repl r 1 gt gt gt re sub X repl X X gt gt gt re sub X desired escape funct
  • 背景图像动画使用css3还是jquery? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 谁能帮我了解如何像这个网站上那样为背
  • 当超出设定的吞吐量时应该做什么?

    我正在使用适用于 Javascript Node js 的 AWS 开发工具包从 DynamoDB 表中读取数据 自动缩放功能在大部分时间都表现出色 并且消耗的读取容量单位 RCU 在一天中的大部分时间都非常低 然而 有一个在午夜左右执行的