首页 > 解决方案 > 从 Lambda 调用 DynamoDB BatchGetItem 具有 >1000 毫秒的延迟。正常吗?

问题描述

我正在做 POC 以了解 DynamoDB 的速度。我试图解决的示例问题如下:

我在输入上有 100 个键。对于每个键,我必须查找相关信息。每个键的相关信息约为 8kB。

我已将密钥及其相关信息存储到 DynamoDB 表中test_table,并将容量设置为按需模式。我从 AWS Lambda 函数中获取信息。该表和 Lambda 位于同一地区(欧盟法兰克福)。这是获取给定密钥列表信息的代码示例:

key_list = [
    'key0',
    # ...
    'key99'
]
dynamo_client = boto3.client('dynamodb')
response = dynamo_client.batch_get_item(
    RequestItems={
        'test_table': {
            'Keys': [
                {
                    'key': {'S': k}
                } for k in key_list
            ],
            'ConsistentRead': False
        }
    }
)

我总是运行 Lambda 几次以确保它已经预热。当我第一次做这个测试时,大约需要 2000 毫秒。我的期望是在大约 500 毫秒内得到这个。我为加快速度所做的事情:

所以我的猜测是瓶颈在 Lambda 和 DynamoDB 表之间。

我没有尝试过 DAX,因为它涉及到集群的一些额外成本,而且我不确定它是否会有所帮助,因为 DAX 承诺会加快 DynamoDB 方面的速度,这似乎不是瓶颈。

我的问题是:从 DynamoDB 到 Lambda 大约 8MB 需要 >1000 毫秒,这有点正常吗?还是我做错了什么?

标签: pythonaws-lambdaamazon-dynamodblatency

解决方案


推荐阅读