AWS + DynamoDB + API 网关需要时间

AWS + DynamoDB + API gateway takes time

我们的技术栈: DynamoDB + Node.js + Aws Lambda + API 网关。

截至目前,我们数据库中的数据不多,总共大约有 100 条记录。在获取时,我们使用 GSIquery 而不是 scan 以获得快速结果,并且还使用了 10 的限制。但它仍然没有 return 快速响应。仅 10 records 需要 898.50 ms.

任何人都可以帮助,如何减少这个响应时间,因为这是开发的初始阶段。

为什么要花这么多钱?我们如何才能获得更快的响应以及影响性能的因素。

示例代码:

const itemParams = {
    TableName: CUSTOMER_TABLE,
    IndexName: 'companyId-index', // GSI Without range key
    KeyConditionExpression: 'companyId = :companyId',
    ProjectionExpression: [
      'id',
      'companyId',
      'fullName',
      'companyName',
      'mobileNumber',
      'contactEmail',
      'createdAt',
      'updatedAt'
    ],
    FilterExpression: 'isDeleted = :isDeleted',
    ExpressionAttributeValues: {
      ':isDeleted': false,
      ':companyId': authCompanyId
    }
  };

const customerList = await dynamoUtils.query(itemParams);

注意:函数只是在 dynamo 中执行查询,在 lambda 函数本身和 dynamo 查询中都没有任何复杂的计算。

感谢您的帮助。

如评论中所述,使用非常小的 lambda 大小(256MB 或更小)对于需要下载一些包的冷启动来说会变得非常慢。这是因为 lambda 的内存与其他性能指标密切相关,例如 lambda 可用的 CPU。

将内存增加到 1GB 或使用工具对其进行优化可以显着缩短此时间。