我们的技术:DynamoDB + Node.js + Aws Lambda + API Gateway.
到目前为止,我们的数据库中没有多少数据,总共大约有100条记录。在提取时,为了快速得到结果,我们使用了GSI
和query
/scan
,也使用了10的极限。但它仍然没有快速返回响应。对于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或使用工具进行优化可以显著减少此时间。