如何为 ECS 容器添加交换?

如何为 ECS 容器添加交换?

我的 EC2 实例内存不足,我认为添加交换可能会有所帮助

我不确定是 EC2 内存不足还是容器内存不足,以下是 AWS get-instance-screenshot 提供的 EC2 屏幕截图

实例截图

医生在https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-swap.html说我们可以添加交换。所以我将以下内容添加到任务定义并部署它

        "linuxParameters": {
            "capabilities": null,
            "sharedMemorySize": null,
            "tmpfs": null,
            "devices": null,
            "maxSwap": 2048,
            "swappiness": 60,
            "initProcessEnabled": null
        },

        "memory": null,
        "memoryReservation": 512,

我登录到 ec2 主机并查看顶部,Swap主机和容器中均未分配(总计 0 个,可用 0 个)。

我错过了什么?

答案1

在您链接到的文档页面的底部有这样一条声明:

笔记

默认情况下,针对 Amazon ECS 优化的 AMI 未启用交换。您必须在实例上启用交换才能使用此功能。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的实例存储交换卷或如何使用交换文件分配内存以用作 Amazon EC2 实例中的交换空间?。

您是否按照所提供的链接中的说明在您的实例上配置交换(而不仅仅是在任务定义中):

另请注意,最佳实践建议仅使用临时实例存储作为交换空间(而不是 EBS 卷)。

相关内容