【问题标题】:AWS Fargate "memoryReservation" - why?AWS Fargate“memoryReservation”——为什么?
【发布时间】:2020-10-20 23:16:54
【问题描述】:

我在理解 AWS ECS Fargate 上的内存管理方面有些困难。

我们可以为我们的容器设置一个memoryReservation,并为我们的任务设置一个“memory”限制。

为什么要在 Fargate 上定义 Reserverd 内存?我可以理解 EC2 实例类型(选择具有足够可用内存的实例),但在 Fargate 上,aws 应该将任务放在具有足够可用内存的实例上?

【问题讨论】:

    标签: amazon-web-services aws-fargate


    【解决方案1】:

    任务内存是所有容器可用的总内存(它的硬上限)

    memoryReservation 是一个软下限,如果需要,容器可以使用更多内存。

    这对您在一个任务定义中拥有两个或多个容器很有帮助,为了更清楚地说明这一点,我们可以查看这个示例

    在这个例子中,我们为 WordPress 分配了 128 MB,为 MySQL 分配了 128Mb,它们变成了 256MB,这是任务级别内存的一半,但我们不希望出现容器因为使用最大内存而停止的情况,因此我们设置了硬内存限制为 512,一个容器将达到此值,代理将杀死容器。

    deep-dive-into-aws-fargate

    【讨论】:

    • 感谢您的回答,但我不明白当我跳过 memoryReservation 并仅设置内存限制时会发生什么
    • memoryReservation 这是一个软限制,这意味着如果需要,您的容器可以使用更多内存,但是使用momory,您的容器将无法在需要时使用更多内存,并且在达到该限制时会被杀死。
    • 谢谢,但是当我跳过这个设置时,我想不出后果。就像您的示例一样:mysql + wordpress 都设置为内存 256mb,Tasklimit 设置为 512mb。我唯一能想象的是一个容器在启动时会获得所有内存?
    • 跳过此设置将导致我们需要的灵活性,例如 WordPress 收到一些异常流量并需要更多内存,而 DB 在特定时间似乎还可以,但我们已经设置了硬限制,因此 wordpress 将由于我们强化了内存,因此无法处理这些请求。因此,通过内存预留,我们可以保持灵活性,直到触及任务定义中定义的上限。
    猜你喜欢
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 2018-06-21
    • 2019-05-06
    相关资源
    最近更新 更多