【问题标题】:Amazon Web Services DynamoDB Requests SlowAmazon Web Services DynamoDB 请求缓慢
【发布时间】:2016-07-16 16:41:40
【问题描述】:

我目前正在使用库 dynamoose 来处理 Node.js 中的 DynamoDB。我一直在做一些测试,为什么我的快速请求在某些情况下需要 1000+ 毫秒,并将其指向 dynamoose 函数。在进行扫描或保存时,每个请求大约需要 240 毫秒。因此,如果我必须在一个函数中执行其中的一些操作,可能会很长。

根据 AWS,我远远低于我预置的读写容量。

我的一张表也显示 10-40 毫秒的扫描和放置延迟。这似乎并不坏,但似乎仍然略高(可能是完全正常的)。

关于如何提高这一切的速度以使我的数据库请求不占用 240 毫秒的任何想法?

【问题讨论】:

    标签: node.js amazon-web-services express amazon-dynamodb


    【解决方案1】:

    扫描获取表中的所有内容。因此,根据桌子的大小,可能需要一段时间才能将所有东西都带进来。

    您在此处看到的扫描延迟是针对服务器上的 1 个扫描请求(它不考虑网络或客户端延迟)。

    要获取表中的所有内容,您通常会执行多个扫描请求(可以返回 1MB IIRC 的数据大小上限)

    您还需要查看您正在使用的 SDK 中是否启用了 keepalive(即:您是在重复使用连接还是打开新连接),并考虑您与 AWS 区域的距离(如果您没有) t 在与您使用的 DDB 相同区域的 EC2 实例上运行代码,您将看到网络延迟的损失)。

    【讨论】:

    • 好的,目前我表中只有 1 样东西。网络延迟可能是问题所在。我正在使用我的本地计算机并且位于 CO 并且 DynamoDB 位于俄勒冈地区。所以这绝对可能是问题所在。正如我告诉error2007s,因为我使用的是dynamoose,所以要找到他们在哪里实现keepalive功能会有点麻烦。所以我必须想出一个简单的方法来编辑节点包,甚至找到那个代码在哪里。感谢您的帮助。
    【解决方案2】:

    默认情况下,节点中未启用 keepAlive。启用此功能应该会加快速度,因为现有的套接字将被重用。你介意测试这个选项吗?您可以通过使用以下选项实例化您的 DynamoDB 客户端来做到这一点:

    var dynamo = new AWS.DynamoDB({
      region: "ap-southeast-2",
      httpOptions: {
        agent: new https.Agent({
          rejectUnauthorized: true,
          keepAlive: true
        })
      }
    });
    

    【讨论】:

    • 好的,让我尝试解决这个问题。超级难,因为我使用 dynamoose 来处理这些请求,所以我必须进入他们的代码并找出他们在哪里拥有该代码并更新它。如果我知道那在哪里,会告诉你的。
    • 如何在 aws-sdk 中添加 httpoptions
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 2011-09-09
    • 2018-02-10
    • 2018-09-02
    • 1970-01-01
    • 2015-02-20
    相关资源
    最近更新 更多