【问题标题】:AWS Lambda over a second delay when pulling data from Dynamo Db从 Dynamo Db 中提取数据时,AWS Lambda 出现一秒延迟
【发布时间】:2021-09-23 05:52:50
【问题描述】:

我一直在阅读有关 AWS Lambda 和 Dynamodb 的一些教程。我看到了,只是为了得到一条记录的响应,该记录是 Dyanamodb 表目前所有的记录,我看到延迟只有一秒多一点。我的意图是将来将 aws 服务用于聊天应用程序,但这种延迟对于聊天应用程序来说是不可接受的。

函数是如何调用的—— 我使用 API Gateway 调用 lambda 函数,然后 Lambda 函数依次调用 Dynamodb 表,通过函数返回响应,最后通过 API 返回给用户。

Lambda 代码 -

 const AWS = require('aws-sdk');
 const dynamodb = new AWS.DynamoDB({region:'ca-central-1', apiVersion:'2012-08-10'});

exports.handler = (event,context,callback) => {
    const params = {
        Item: {
            "UserId": {
                S:"user_" + Math.random()
            },
            "Age": {
                N:event.age
            },
            "Height": {
                N:event.height
            },
            "Income": {
                N:event.income
            }
        },
        TableName: "compare-yourself"
    };
    dynamodb.putItem(params, function(err, data) {
        if (err) {
            console.log(err);
            callback(err);
        } else {
            console.log(data);
            callback(null, data);
        }
    });
};

【问题讨论】:

  • 你如何衡量延迟?您使用 AWS 控制台的“测试”按钮调用 lambda?
  • 我并没有真正测量它,但我确信在浏览器控制台中看到我的响应消息需要一秒钟的时间。我在 API Gateway 上进行了测试,并且我在 nodejs 中使用 codepen 创建了一个 API 调用函数。在原始帖子中添加了有关调用的更多详细信息。
  • 您的 lambda 函数的内存大小(以 MB 为单位)?
  • 你能显示代码吗?
  • @LRutten 128mb

标签: amazon-web-services aws-lambda amazon-dynamodb


【解决方案1】:

尝试将您的 lambda RAM 增加到大约 1GB,然后重试。高延迟通常是由较小的 lambda 大小引起的。

增加内存还可以提高其他性能指标,例如 CPU,因此通常会减少 lambda 冷启动引起的延迟。尤其是小于 512MB 的 lambdas 启动速度相对较慢。

【讨论】:

  • 目前我使用的是 AWS 提供的免费套餐。如果我可以通过增加内存来减少延迟,这就是我需要知道的。谢谢 LRutten。
  • 我建议你试试看。即使是 1GB 的 1000 次调用也将花费大约 0.005 美元(不到一美分)。
  • 好的,一定会测试出来的。
猜你喜欢
  • 2018-02-26
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多