Node.js Amazon Web服务DynamoDB请求速度慢
我目前正在使用该库处理Node.js中的DynamoDB。我一直在做一些测试,了解为什么我的express请求在某些情况下需要1000毫秒以上的时间,并让pin将其指向dynamoose函数。进行扫描或保存时,每个请求大约需要240毫秒。因此,如果我必须在一个函数中执行其中的一些操作,它可能会变长 根据美国焊接学会(AWS)的说法,我的读写能力远远低于规定的水平 另外,我的一张表显示了10-40ms扫描和放置延迟。这似乎不坏,但仍然似乎有点高(可能是完全正常的tho)Node.js Amazon Web服务DynamoDB请求速度慢,node.js,amazon-web-services,express,amazon-dynamodb,Node.js,Amazon Web Services,Express,Amazon Dynamodb,我目前正在使用该库处理Node.js中的DynamoDB。我一直在做一些测试,了解为什么我的express请求在某些情况下需要1000毫秒以上的时间,并让pin将其指向dynamoose函数。进行扫描或保存时,每个请求大约需要240毫秒。因此,如果我必须在一个函数中执行其中的一些操作,它可能会变长 根据美国焊接学会(AWS)的说法,我的读写能力远远低于规定的水平 另外,我的一张表显示了10-40ms扫描和放置延迟。这似乎不坏,但仍然似乎有点高(可能是完全正常的tho) 关于如何提高所有这些的速
关于如何提高所有这些的速度以使我的DB请求不需要240毫秒,您有什么想法吗?默认情况下,节点中未启用keepAlive。启用此功能将加快速度,因为现有套接字将被重用。你介意测试一下这个选项吗?您可以通过使用以下选项实例化DynamoDB客户端来实现这一点:
var dynamo = new AWS.DynamoDB({
region: "ap-southeast-2",
httpOptions: {
agent: new https.Agent({
rejectUnauthorized: true,
keepAlive: true
})
}
});
扫描将获取表中的所有内容。因此,根据桌子的大小,可能需要一段时间才能把所有东西都搬进来 您在这里看到的扫描延迟是针对服务器上的1个扫描请求的(它不考虑网络或客户端延迟) 要获取表中的所有内容,通常需要执行几个扫描请求(返回1MB IIRC的数据大小有一个上限)
您还需要查看SDK中是否启用了KeePielt(即:您正在重新使用连接或打开新的连接)并考虑AWS区域有多远(如果在与使用的DDB相同的区域中不运行EC2实例上的代码,您将看到网络延迟的惩罚)。.
好的,让我试着解决这个问题。超级困难,因为我使用dynamoose来处理这些请求,所以我必须深入到他们的代码中,找出他们在哪里有代码,并进行更新。如果我弄清楚了在哪里,我会告诉你的。如何在aws sdkOk中添加httpoptions目前我在表中只有一样东西。网络延迟可能是问题所在。我用的是我当地的电脑,它位于科罗拉多州,DynamoDB位于俄勒冈州。所以这可能是个问题。正如我告诉error2007s的,因为我使用的是dynamoose,所以要找到他们在哪里实现keepalive函数会有点麻烦。因此,我必须找到一种简单的方法来编辑节点包,甚至找到代码所在的位置。谢谢你的帮助。