gpt4 book ai didi

amazon-web-services - Dockerrun aws 硬编码内存

转载 作者:行者123 更新时间:2023-12-02 17:35:50 27 4
gpt4 key购买 nike

多容器Docker 环境弹力 bean 茎 ,在 Dockerrun.aws.json 中定义内存是强制性的,我想知道处理内存硬编码值的最佳实践是什么。

特别是当我们需要调整实例类型时,我们也需要调整内存值。

有没有办法指定一种百分比而不是确切的数字?
也许是对@aws 的建议

这是一个 Dockerrun.aws 模板示例:

{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"name": "container-1",
"image": "image-1.com/image-xxxxxx",
"memory": 512
},
{
"name": "container-2",
"image": "image-2.com/image-xxxxxx",
"memory": 256
},
{
"name": "container-3",
"image": "image-3.com/image-xxxxxx",
"memory": 256
}
]
}

最佳答案

我不是 AWS 内部人员,但我们为我们的应用程序使用了 AWS Elastic Beanstalk 以及更高级的部署策略(例如自定义 CloudFormation 模板)。以下是我作为 DevOps 工程师使用这些服务的个人经验的一些笔记:

  • 最佳实践是在文件 Dockerrun.aws.json 中定义 MiB 中的内存,如文档所述。 [1]
  • 您不需要定义内存硬限制。正如文档所述,内存软限制就足够了:“为容器定义中的内存或 memoryReservation 参数之一或两者指定一个非零整数。” [1]
  • memory 或 memoryReservation 预留必须提供给 AWS Elastic Beanstalk,因为它使用 AWS ECS 作为需要这些值之一的基础服务。它使用 ECS 代理将容器放置在 EC2 实例上,并且必须知道为每个容器预留多少空间。
  • 除非您的应用程序受内存限制,否则上述放大/缩小问题(即“调整实例类型”)不应成为问题,因为您始终可以为 CPU 密集型应用程序设置非常低的 memoryReservation 值。有关软和硬内存限制之间差异的详细解释,请参见 [2]。还要记住:“Docker 守护程序为容器保留至少 4 MiB 的内存,因此您不应为容器指定少于 4 MiB 的内存。” [3]
  • 如果您想要更多的灵活性/控制,您始终可以通过 AWS CloudFormation 使用基础设施即代码从 AWS Elastic Beanstalk 转移到 ECS 部署。
  • 如果您对 AWS ECS 中的工作原理感兴趣,请访问 AWS 的以下精彩博客文章:Amazon ECS 如何管理 CPU 和内存资源。 [4]

  • 引用

    [1] https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html
    [2] https://stackoverflow.com/a/44764770/10473469
    [3] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html
    [4] https://aws.amazon.com/de/blogs/containers/how-amazon-ecs-manages-cpu-and-memory-resources/

    关于amazon-web-services - Dockerrun aws 硬编码内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54824007/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com