AWS + DynamoDB + API 网关需要时间
AWS + DynamoDB + API gateway takes time
我们的技术栈:
DynamoDB + Node.js + Aws Lambda + API 网关。
截至目前,我们数据库中的数据不多,总共大约有 100 条记录。在获取时,我们使用 GSI
和 query
而不是 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 或使用工具对其进行优化可以显着缩短此时间。
我们的技术栈: DynamoDB + Node.js + Aws Lambda + API 网关。
截至目前,我们数据库中的数据不多,总共大约有 100 条记录。在获取时,我们使用 GSI
和 query
而不是 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 或使用工具对其进行优化可以显着缩短此时间。