【问题标题】:Web application (Elastic Beanstalk + Flask) reading from DynamoDB more than expected从 DynamoDB 读取的 Web 应用程序(Elastic Beanstalk + Flask)超出预期
【发布时间】:2021-02-07 13:51:57
【问题描述】:

总的来说,我是 Web 开发的新手。我使用弹性 beanstalk 设置了一个烧瓶应用程序,用于查询 dynamodb 表。当我在本地运行应用程序时,我可以看到 ConsumedReadCapacityUnits 飙升至 ~128,然后又回落。大概这代表了表的一个查询。但是,当我将应用程序作为应用程序部署到弹性 beanstalk 时,ConsumedReadCapacityUnits 会飙升至 400-800 ConsumedReadCapacityUnits 并保持在那里,即使我认为没有人在加载该应用程序也是如此。为什么会这样?弹性豆茎是否不断查询表?有没有办法让它不呢?

代码: https://github.com/kimberlymcm/flaskapp/

查询表函数

import boto3  
from boto3.dynamodb.conditions import Key  

dynamo_client = boto3.client('dynamodb', region_name='us-west-2')  

def get_data(items=["pm1", "pm25", "pm10"]):  
    cols_to_extract = f"device_id, #time_taken"  
    for item in items:  
        cols_to_extract += f", payload.{item}"  
    response = dynamo_client.query(  
        ProjectionExpression=cols_to_extract,  
        ExpressionAttributeNames={"#time_taken": "time"},  
        KeyConditionExpression="device_id = :enviro",  
        ExpressionAttributeValues={":enviro" : {"S" : "enviro"}},  
        TableName='iot_table')  
    return response['Items']  

此图的左侧是应用仅在弹性豆茎中运行且我未加载应用时的情况。右边是在本地运行的时候。

【问题讨论】:

  • 您的 EB 应用程序是否有任何来自 Internet 的请求会触发读取操作?一些健康检查呢? Mayeb R53 或 ALB 健康检查一直触发它?
  • 我如何检查它是否是其中之一?我很难弄清楚请求的来源。

标签: flask amazon-dynamodb amazon-elastic-beanstalk


【解决方案1】:

它是自动负载平衡器。我刚刚使用了 Elastic Beanstalk 的默认配置,其中显然包括一个负载均衡器。我猜负载均衡器运行状况检查正在向数据库发送请求(?)。当我移除负载均衡器时,流量又回到了预期水平。

我也检查了 route 53 控制台,但我没有设置任何运行状况检查。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2021-10-11
    • 2015-09-18
    • 2020-04-29
    • 2022-06-11
    • 2022-01-12
    • 2017-02-17
    • 2017-06-14
    • 1970-01-01
    相关资源
    最近更新 更多