用户空间程序可以决定每个Docker容器进程所需的内存大小吗?

问题描述 投票:0回答:1

下面是用于配置ECS任务的CloudFormation模板:

  TodobackendTaskDefinition:
    Type: "AWS::ECS::TaskDefinition"
    Properties:
      ContainerDefinitions:

        - Name: todobackend
          Image: someacct/todobackend
          Memory: 450
          MountPoints:
            - ContainerPath: /var/www/todobackend
              SourceVolume: webroot
          Command:
            - uwsgi
            - "--socket /var/www/todobackend/todobackend.sock"
            - "--chmod-socket=666"
            - "--module todobackend.wsgi"
            - "--master"
            - "--die-on-term"

        - Name: nginx
          Image: someacct/todobackend-nginx
          Memory: 300
          PortMappings:
            - ContainerPort: "8000"
              HostPort: "8000"
          MountPoints:
            - ContainerPath: /var/www/todobackend
              SourceVolume: webroot

      Volumes:
        - Name: webroot
          Host:
            SourcePath: /ecs/webroot


  TodobackendAdhocTaskDefinition:
    Type: "AWS::ECS::TaskDefinition"
    Properties:
      ContainerDefinitions:
        - Name: todobackend
          Image: someacct/todobackend
          Memory: 245
          MountPoints:
            - ContainerPath: /var/www/todobackend
              SourcePath: webroot

      Volumes:
        - Name: webroot
          Host:
            SourcePath: /ecs/webroot

其中,假设这三个任务在分配了1 GB RAM的t2.micro EC2实例类型上运行,则这三个任务的内存属性被平均划分(450 + 300 + 250 MB)>]

随机更改这些值(os "Memory")使任务运行或失败

,而没有适当控制失败原因。

在失败时,在AWS云中进行调试时,我们会收到此类错误:

enter image description here

内存管理将每个进程的虚拟地址空间映射到物理地址空间。进程管理引用虚拟地址,而不引用物理地址。

Docker容器名称空间是使用clone()系统调用在内部创建的。

1]分配RAMMemory: 300MB大小对于OS进程(泊坞窗容器)意味着什么? clone()系统调用是否在内部接收此值作为参数?

2)"Memory": 450中的"ContainerDefinitions" MB RAM大小实际如何工作?这里每个docker容器都是一个OS进程

下面是用于配置ECS任务的CloudFormation模板:TodobackendTaskDefinition:类型:“ AWS :: ECS :: TaskDefinition”属性:ContainerDefinitions:-名称:todobackend ...

docker memory-management amazon-cloudformation clone systems-programming
1个回答
0
投票

您不应该在具有最小内存的如此小的实例中使用memory参数,请记住这两者之间有一个很大的区别,达到内存限制后,您的容器将被[[killed

© www.soinside.com 2019 - 2024. All rights reserved.